1d0d1431aSEduard Zingerman// RUN: llvm-mc -triple bpfel --mcpu=v3 --assemble --filetype=obj %s \ 2d0d1431aSEduard Zingerman// RUN: | llvm-objdump -d --mattr=+alu32 - \ 3d0d1431aSEduard Zingerman// RUN: | FileCheck %s 4d0d1431aSEduard Zingerman 5d0d1431aSEduard Zingerman// CHECK: 07 01 00 00 2a 00 00 00 r1 += 0x2a 6d0d1431aSEduard Zingerman// CHECK: 0f 21 00 00 00 00 00 00 r1 += r2 7d0d1431aSEduard Zingermanr1 += 42 8d0d1431aSEduard Zingermanr1 += r2 9d0d1431aSEduard Zingerman// CHECK: 17 01 00 00 2a 00 00 00 r1 -= 0x2a 10d0d1431aSEduard Zingerman// CHECK: 1f 21 00 00 00 00 00 00 r1 -= r2 11d0d1431aSEduard Zingermanr1 -= 42 12d0d1431aSEduard Zingermanr1 -= r2 13d0d1431aSEduard Zingerman// CHECK: 27 01 00 00 2a 00 00 00 r1 *= 0x2a 14d0d1431aSEduard Zingerman// CHECK: 2f 21 00 00 00 00 00 00 r1 *= r2 15d0d1431aSEduard Zingermanr1 *= 42 16d0d1431aSEduard Zingermanr1 *= r2 17d0d1431aSEduard Zingerman// CHECK: 37 01 00 00 2a 00 00 00 r1 /= 0x2a 18d0d1431aSEduard Zingerman// CHECK: 3f 21 00 00 00 00 00 00 r1 /= r2 19d0d1431aSEduard Zingermanr1 /= 42 20d0d1431aSEduard Zingermanr1 /= r2 21d0d1431aSEduard Zingerman// CHECK: 47 01 00 00 2a 00 00 00 r1 |= 0x2a 22d0d1431aSEduard Zingerman// CHECK: 4f 21 00 00 00 00 00 00 r1 |= r2 23d0d1431aSEduard Zingermanr1 |= 42 24d0d1431aSEduard Zingermanr1 |= r2 25d0d1431aSEduard Zingerman// CHECK: 57 01 00 00 2a 00 00 00 r1 &= 0x2a 26d0d1431aSEduard Zingerman// CHECK: 5f 21 00 00 00 00 00 00 r1 &= r2 27d0d1431aSEduard Zingermanr1 &= 42 28d0d1431aSEduard Zingermanr1 &= r2 29d0d1431aSEduard Zingerman// CHECK: 67 01 00 00 2a 00 00 00 r1 <<= 0x2a 30d0d1431aSEduard Zingerman// CHECK: 6f 21 00 00 00 00 00 00 r1 <<= r2 31d0d1431aSEduard Zingermanr1 <<= 42 32d0d1431aSEduard Zingermanr1 <<= r2 33d0d1431aSEduard Zingerman// CHECK: 77 01 00 00 2a 00 00 00 r1 >>= 0x2a 34d0d1431aSEduard Zingerman// CHECK: 7f 21 00 00 00 00 00 00 r1 >>= r2 35d0d1431aSEduard Zingermanr1 >>= 42 36d0d1431aSEduard Zingermanr1 >>= r2 37d0d1431aSEduard Zingerman// CHECK: 97 01 00 00 2a 00 00 00 r1 %= 0x2a 38d0d1431aSEduard Zingerman// CHECK: 9f 21 00 00 00 00 00 00 r1 %= r2 39d0d1431aSEduard Zingermanr1 %= 42 40d0d1431aSEduard Zingermanr1 %= r2 41d0d1431aSEduard Zingerman// CHECK: a7 01 00 00 2a 00 00 00 r1 ^= 0x2a 42d0d1431aSEduard Zingerman// CHECK: af 21 00 00 00 00 00 00 r1 ^= r2 43d0d1431aSEduard Zingermanr1 ^= 42 44d0d1431aSEduard Zingermanr1 ^= r2 45d0d1431aSEduard Zingerman// CHECK: b7 01 00 00 2a 00 00 00 r1 = 0x2a 46d0d1431aSEduard Zingerman// CHECK: bf 21 00 00 00 00 00 00 r1 = r2 47d0d1431aSEduard Zingermanr1 = 42 48d0d1431aSEduard Zingermanr1 = r2 49d0d1431aSEduard Zingerman// CHECK: c7 01 00 00 2a 00 00 00 r1 s>>= 0x2a 50d0d1431aSEduard Zingerman// CHECK: cf 21 00 00 00 00 00 00 r1 s>>= r2 51d0d1431aSEduard Zingermanr1 s>>= 42 52d0d1431aSEduard Zingermanr1 s>>= r2 53d0d1431aSEduard Zingerman// CHECK: 87 01 00 00 00 00 00 00 r1 = -r1 54d0d1431aSEduard Zingermanr1 = -r1 55d0d1431aSEduard Zingerman 56d0d1431aSEduard Zingerman// CHECK: 18 01 00 00 2a 00 00 00 00 00 00 00 00 00 00 00 r1 = 0x2a ll 57d0d1431aSEduard Zingermanr1 = 42 ll 58d0d1431aSEduard Zingerman 59d0d1431aSEduard Zingerman// CHECK: 04 01 00 00 2a 00 00 00 w1 += 0x2a 60d0d1431aSEduard Zingerman// CHECK: 0c 21 00 00 00 00 00 00 w1 += w2 61d0d1431aSEduard Zingermanw1 += 42 62d0d1431aSEduard Zingermanw1 += w2 63d0d1431aSEduard Zingerman// CHECK: 14 01 00 00 2a 00 00 00 w1 -= 0x2a 64d0d1431aSEduard Zingerman// CHECK: 1c 21 00 00 00 00 00 00 w1 -= w2 65d0d1431aSEduard Zingermanw1 -= 42 66d0d1431aSEduard Zingermanw1 -= w2 67d0d1431aSEduard Zingerman// CHECK: 24 01 00 00 2a 00 00 00 w1 *= 0x2a 68d0d1431aSEduard Zingerman// CHECK: 2c 21 00 00 00 00 00 00 w1 *= w2 69d0d1431aSEduard Zingermanw1 *= 42 70d0d1431aSEduard Zingermanw1 *= w2 71d0d1431aSEduard Zingerman// CHECK: 34 01 00 00 2a 00 00 00 w1 /= 0x2a 72d0d1431aSEduard Zingerman// CHECK: 3c 21 00 00 00 00 00 00 w1 /= w2 73d0d1431aSEduard Zingermanw1 /= 42 74d0d1431aSEduard Zingermanw1 /= w2 75d0d1431aSEduard Zingerman// CHECK: 44 01 00 00 2a 00 00 00 w1 |= 0x2a 76d0d1431aSEduard Zingerman// CHECK: 4c 21 00 00 00 00 00 00 w1 |= w2 77d0d1431aSEduard Zingermanw1 |= 42 78d0d1431aSEduard Zingermanw1 |= w2 79d0d1431aSEduard Zingerman// CHECK: 54 01 00 00 2a 00 00 00 w1 &= 0x2a 80d0d1431aSEduard Zingerman// CHECK: 5c 21 00 00 00 00 00 00 w1 &= w2 81d0d1431aSEduard Zingermanw1 &= 42 82d0d1431aSEduard Zingermanw1 &= w2 83d0d1431aSEduard Zingerman// CHECK: 64 01 00 00 2a 00 00 00 w1 <<= 0x2a 84d0d1431aSEduard Zingerman// CHECK: 6c 21 00 00 00 00 00 00 w1 <<= w2 85d0d1431aSEduard Zingermanw1 <<= 42 86d0d1431aSEduard Zingermanw1 <<= w2 87d0d1431aSEduard Zingerman// CHECK: 74 01 00 00 2a 00 00 00 w1 >>= 0x2a 88d0d1431aSEduard Zingerman// CHECK: 7c 21 00 00 00 00 00 00 w1 >>= w2 89d0d1431aSEduard Zingermanw1 >>= 42 90d0d1431aSEduard Zingermanw1 >>= w2 91d0d1431aSEduard Zingerman// CHECK: 94 01 00 00 2a 00 00 00 w1 %= 0x2a 92d0d1431aSEduard Zingerman// CHECK: 9c 21 00 00 00 00 00 00 w1 %= w2 93d0d1431aSEduard Zingermanw1 %= 42 94d0d1431aSEduard Zingermanw1 %= w2 95d0d1431aSEduard Zingerman// CHECK: a4 01 00 00 2a 00 00 00 w1 ^= 0x2a 96d0d1431aSEduard Zingerman// CHECK: ac 21 00 00 00 00 00 00 w1 ^= w2 97d0d1431aSEduard Zingermanw1 ^= 42 98d0d1431aSEduard Zingermanw1 ^= w2 99d0d1431aSEduard Zingerman// CHECK: b4 01 00 00 2a 00 00 00 w1 = 0x2a 100d0d1431aSEduard Zingerman// CHECK: bc 21 00 00 00 00 00 00 w1 = w2 101d0d1431aSEduard Zingermanw1 = 42 102d0d1431aSEduard Zingermanw1 = w2 103d0d1431aSEduard Zingerman// CHECK: c4 01 00 00 2a 00 00 00 w1 s>>= 0x2a 104d0d1431aSEduard Zingerman// CHECK: cc 21 00 00 00 00 00 00 w1 s>>= w2 105d0d1431aSEduard Zingermanw1 s>>= 42 106d0d1431aSEduard Zingermanw1 s>>= w2 107d0d1431aSEduard Zingerman// CHECK: 84 01 00 00 00 00 00 00 w1 = -w1 108d0d1431aSEduard Zingermanw1 = -w1 109d0d1431aSEduard Zingerman 110d0d1431aSEduard Zingerman// CHECK: dc 01 00 00 10 00 00 00 r1 = be16 r1 111d0d1431aSEduard Zingerman// CHECK: dc 02 00 00 20 00 00 00 r2 = be32 r2 112d0d1431aSEduard Zingerman// CHECK: dc 03 00 00 40 00 00 00 r3 = be64 r3 113d0d1431aSEduard Zingermanr1 = be16 r1 114d0d1431aSEduard Zingermanr2 = be32 r2 115d0d1431aSEduard Zingermanr3 = be64 r3 116d0d1431aSEduard Zingerman// CHECK: d4 01 00 00 10 00 00 00 r1 = le16 r1 117d0d1431aSEduard Zingerman// CHECK: d4 02 00 00 20 00 00 00 r2 = le32 r2 118d0d1431aSEduard Zingerman// CHECK: d4 03 00 00 40 00 00 00 r3 = le64 r3 119d0d1431aSEduard Zingermanr1 = le16 r1 120d0d1431aSEduard Zingermanr2 = le32 r2 121d0d1431aSEduard Zingermanr3 = le64 r3 122d0d1431aSEduard Zingerman// CHECK: 05 00 00 00 00 00 00 00 goto +0x0 123d0d1431aSEduard Zingermangoto +0 124d0d1431aSEduard Zingerman 125d0d1431aSEduard Zingerman// CHECK: 15 01 00 00 2a 00 00 00 if r1 == 0x2a goto +0x0 126d0d1431aSEduard Zingerman// CHECK: 1d 21 00 00 00 00 00 00 if r1 == r2 goto +0x0 127d0d1431aSEduard Zingermanif r1 == 42 goto +0 128d0d1431aSEduard Zingermanif r1 == r2 goto +0 129d0d1431aSEduard Zingerman// CHECK: 55 01 00 00 2a 00 00 00 if r1 != 0x2a goto +0x0 130d0d1431aSEduard Zingerman// CHECK: 5d 21 00 00 00 00 00 00 if r1 != r2 goto +0x0 131d0d1431aSEduard Zingermanif r1 != 42 goto +0 132d0d1431aSEduard Zingermanif r1 != r2 goto +0 133d0d1431aSEduard Zingerman// CHECK: 25 01 00 00 2a 00 00 00 if r1 > 0x2a goto +0x0 134d0d1431aSEduard Zingerman// CHECK: 2d 21 00 00 00 00 00 00 if r1 > r2 goto +0x0 135d0d1431aSEduard Zingermanif r1 > 42 goto +0 136d0d1431aSEduard Zingermanif r1 > r2 goto +0 137d0d1431aSEduard Zingerman// CHECK: 35 01 00 00 2a 00 00 00 if r1 >= 0x2a goto +0x0 138d0d1431aSEduard Zingerman// CHECK: 3d 21 00 00 00 00 00 00 if r1 >= r2 goto +0x0 139d0d1431aSEduard Zingermanif r1 >= 42 goto +0 140d0d1431aSEduard Zingermanif r1 >= r2 goto +0 141d0d1431aSEduard Zingerman// CHECK: 65 01 00 00 2a 00 00 00 if r1 s> 0x2a goto +0x0 142d0d1431aSEduard Zingerman// CHECK: 6d 21 00 00 00 00 00 00 if r1 s> r2 goto +0x0 143d0d1431aSEduard Zingermanif r1 s> 42 goto +0 144d0d1431aSEduard Zingermanif r1 s> r2 goto +0 145d0d1431aSEduard Zingerman// CHECK: 75 01 00 00 2a 00 00 00 if r1 s>= 0x2a goto +0x0 146d0d1431aSEduard Zingerman// CHECK: 7d 21 00 00 00 00 00 00 if r1 s>= r2 goto +0x0 147d0d1431aSEduard Zingermanif r1 s>= 42 goto +0 148d0d1431aSEduard Zingermanif r1 s>= r2 goto +0 149d0d1431aSEduard Zingerman// CHECK: a5 01 00 00 2a 00 00 00 if r1 < 0x2a goto +0x0 150d0d1431aSEduard Zingerman// CHECK: ad 21 00 00 00 00 00 00 if r1 < r2 goto +0x0 151d0d1431aSEduard Zingermanif r1 < 42 goto +0 152d0d1431aSEduard Zingermanif r1 < r2 goto +0 153d0d1431aSEduard Zingerman// CHECK: b5 01 00 00 2a 00 00 00 if r1 <= 0x2a goto +0x0 154d0d1431aSEduard Zingerman// CHECK: bd 21 00 00 00 00 00 00 if r1 <= r2 goto +0x0 155d0d1431aSEduard Zingermanif r1 <= 42 goto +0 156d0d1431aSEduard Zingermanif r1 <= r2 goto +0 157d0d1431aSEduard Zingerman// CHECK: c5 01 00 00 2a 00 00 00 if r1 s< 0x2a goto +0x0 158d0d1431aSEduard Zingerman// CHECK: cd 21 00 00 00 00 00 00 if r1 s< r2 goto +0x0 159d0d1431aSEduard Zingermanif r1 s< 42 goto +0 160d0d1431aSEduard Zingermanif r1 s< r2 goto +0 161d0d1431aSEduard Zingerman// CHECK: d5 01 00 00 2a 00 00 00 if r1 s<= 0x2a goto +0x0 162d0d1431aSEduard Zingerman// CHECK: dd 21 00 00 00 00 00 00 if r1 s<= r2 goto +0x0 163d0d1431aSEduard Zingermanif r1 s<= 42 goto +0 164d0d1431aSEduard Zingermanif r1 s<= r2 goto +0 165d0d1431aSEduard Zingerman 166d0d1431aSEduard Zingerman// CHECK: 16 01 00 00 2a 00 00 00 if w1 == 0x2a goto +0x0 167d0d1431aSEduard Zingerman// CHECK: 1e 21 00 00 00 00 00 00 if w1 == w2 goto +0x0 168d0d1431aSEduard Zingermanif w1 == 42 goto +0 169d0d1431aSEduard Zingermanif w1 == w2 goto +0 170d0d1431aSEduard Zingerman// CHECK: 56 01 00 00 2a 00 00 00 if w1 != 0x2a goto +0x0 171d0d1431aSEduard Zingerman// CHECK: 5e 21 00 00 00 00 00 00 if w1 != w2 goto +0x0 172d0d1431aSEduard Zingermanif w1 != 42 goto +0 173d0d1431aSEduard Zingermanif w1 != w2 goto +0 174d0d1431aSEduard Zingerman// CHECK: 26 01 00 00 2a 00 00 00 if w1 > 0x2a goto +0x0 175d0d1431aSEduard Zingerman// CHECK: 2e 21 00 00 00 00 00 00 if w1 > w2 goto +0x0 176d0d1431aSEduard Zingermanif w1 > 42 goto +0 177d0d1431aSEduard Zingermanif w1 > w2 goto +0 178d0d1431aSEduard Zingerman// CHECK: 36 01 00 00 2a 00 00 00 if w1 >= 0x2a goto +0x0 179d0d1431aSEduard Zingerman// CHECK: 3e 21 00 00 00 00 00 00 if w1 >= w2 goto +0x0 180d0d1431aSEduard Zingermanif w1 >= 42 goto +0 181d0d1431aSEduard Zingermanif w1 >= w2 goto +0 182d0d1431aSEduard Zingerman// CHECK: 66 01 00 00 2a 00 00 00 if w1 s> 0x2a goto +0x0 183d0d1431aSEduard Zingerman// CHECK: 6e 21 00 00 00 00 00 00 if w1 s> w2 goto +0x0 184d0d1431aSEduard Zingermanif w1 s> 42 goto +0 185d0d1431aSEduard Zingermanif w1 s> w2 goto +0 186d0d1431aSEduard Zingerman// CHECK: 76 01 00 00 2a 00 00 00 if w1 s>= 0x2a goto +0x0 187d0d1431aSEduard Zingerman// CHECK: 7e 21 00 00 00 00 00 00 if w1 s>= w2 goto +0x0 188d0d1431aSEduard Zingermanif w1 s>= 42 goto +0 189d0d1431aSEduard Zingermanif w1 s>= w2 goto +0 190d0d1431aSEduard Zingerman// CHECK: a6 01 00 00 2a 00 00 00 if w1 < 0x2a goto +0x0 191d0d1431aSEduard Zingerman// CHECK: ae 21 00 00 00 00 00 00 if w1 < w2 goto +0x0 192d0d1431aSEduard Zingermanif w1 < 42 goto +0 193d0d1431aSEduard Zingermanif w1 < w2 goto +0 194d0d1431aSEduard Zingerman// CHECK: b6 01 00 00 2a 00 00 00 if w1 <= 0x2a goto +0x0 195d0d1431aSEduard Zingerman// CHECK: be 21 00 00 00 00 00 00 if w1 <= w2 goto +0x0 196d0d1431aSEduard Zingermanif w1 <= 42 goto +0 197d0d1431aSEduard Zingermanif w1 <= w2 goto +0 198d0d1431aSEduard Zingerman// CHECK: c6 01 00 00 2a 00 00 00 if w1 s< 0x2a goto +0x0 199d0d1431aSEduard Zingerman// CHECK: ce 21 00 00 00 00 00 00 if w1 s< w2 goto +0x0 200d0d1431aSEduard Zingermanif w1 s< 42 goto +0 201d0d1431aSEduard Zingermanif w1 s< w2 goto +0 202d0d1431aSEduard Zingerman// CHECK: d6 01 00 00 2a 00 00 00 if w1 s<= 0x2a goto +0x0 203d0d1431aSEduard Zingerman// CHECK: de 21 00 00 00 00 00 00 if w1 s<= w2 goto +0x0 204d0d1431aSEduard Zingermanif w1 s<= 42 goto +0 205d0d1431aSEduard Zingermanif w1 s<= w2 goto +0 206d0d1431aSEduard Zingerman 207d0d1431aSEduard Zingerman// CHECK: 85 00 00 00 2a 00 00 00 call 0x2a 208d0d1431aSEduard Zingermancall +42 209d0d1431aSEduard Zingerman// CHECK: 95 00 00 00 00 00 00 00 exit 210d0d1431aSEduard Zingermanexit 211d0d1431aSEduard Zingerman 212d0d1431aSEduard Zingerman// Note: For the group below w1 is used as a destination for sizes u8, u16, u32. 213d0d1431aSEduard Zingerman// This is disassembler quirk, but is technically not wrong, as there are 214d0d1431aSEduard Zingerman// no different encodings for 'r1 = load' vs 'w1 = load'. 215d0d1431aSEduard Zingerman// 216d0d1431aSEduard Zingerman// CHECK: 71 21 2a 00 00 00 00 00 w1 = *(u8 *)(r2 + 0x2a) 217d0d1431aSEduard Zingerman// CHECK: 69 21 2a 00 00 00 00 00 w1 = *(u16 *)(r2 + 0x2a) 218d0d1431aSEduard Zingerman// CHECK: 61 21 2a 00 00 00 00 00 w1 = *(u32 *)(r2 + 0x2a) 219d0d1431aSEduard Zingerman// CHECK: 79 21 2a 00 00 00 00 00 r1 = *(u64 *)(r2 + 0x2a) 220d0d1431aSEduard Zingermanr1 = *(u8*)(r2 + 42) 221d0d1431aSEduard Zingermanr1 = *(u16*)(r2 + 42) 222d0d1431aSEduard Zingermanr1 = *(u32*)(r2 + 42) 223d0d1431aSEduard Zingermanr1 = *(u64*)(r2 + 42) 224d0d1431aSEduard Zingerman 225d0d1431aSEduard Zingerman// Note: For the group below w1 is used as a source for sizes u8, u16, u32. 226d0d1431aSEduard Zingerman// This is disassembler quirk, but is technically not wrong, as there are 227d0d1431aSEduard Zingerman// no different encodings for 'store r1' vs 'store w1'. 228d0d1431aSEduard Zingerman// 229d0d1431aSEduard Zingerman// CHECK: 73 12 2a 00 00 00 00 00 *(u8 *)(r2 + 0x2a) = w1 230d0d1431aSEduard Zingerman// CHECK: 6b 12 2a 00 00 00 00 00 *(u16 *)(r2 + 0x2a) = w1 231d0d1431aSEduard Zingerman// CHECK: 63 12 2a 00 00 00 00 00 *(u32 *)(r2 + 0x2a) = w1 232d0d1431aSEduard Zingerman// CHECK: 7b 12 2a 00 00 00 00 00 *(u64 *)(r2 + 0x2a) = r1 233d0d1431aSEduard Zingerman*(u8*)(r2 + 42) = r1 234d0d1431aSEduard Zingerman*(u16*)(r2 + 42) = r1 235d0d1431aSEduard Zingerman*(u32*)(r2 + 42) = r1 236d0d1431aSEduard Zingerman*(u64*)(r2 + 42) = r1 237d0d1431aSEduard Zingerman 238d0d1431aSEduard Zingerman// CHECK: c3 21 01 00 00 00 00 00 lock *(u32 *)(r1 + 0x1) += w2 239d0d1431aSEduard Zingerman// CHECK: c3 21 01 00 50 00 00 00 lock *(u32 *)(r1 + 0x1) &= w2 240d0d1431aSEduard Zingerman// CHECK: c3 21 01 00 40 00 00 00 lock *(u32 *)(r1 + 0x1) |= w2 241d0d1431aSEduard Zingerman// CHECK: c3 21 01 00 a0 00 00 00 lock *(u32 *)(r1 + 0x1) ^= w2 242d0d1431aSEduard Zingermanlock *(u32*)(r1 + 1) += w2 243d0d1431aSEduard Zingermanlock *(u32*)(r1 + 1) &= w2 244d0d1431aSEduard Zingermanlock *(u32*)(r1 + 1) |= w2 245d0d1431aSEduard Zingermanlock *(u32*)(r1 + 1) ^= w2 246d0d1431aSEduard Zingerman// CHECK: db 21 01 00 00 00 00 00 lock *(u64 *)(r1 + 0x1) += r2 247d0d1431aSEduard Zingerman// CHECK: db 21 01 00 50 00 00 00 lock *(u64 *)(r1 + 0x1) &= r2 248d0d1431aSEduard Zingerman// CHECK: db 21 01 00 40 00 00 00 lock *(u64 *)(r1 + 0x1) |= r2 249d0d1431aSEduard Zingerman// CHECK: db 21 01 00 a0 00 00 00 lock *(u64 *)(r1 + 0x1) ^= r2 250d0d1431aSEduard Zingermanlock *(u64*)(r1 + 1) += r2 251d0d1431aSEduard Zingermanlock *(u64*)(r1 + 1) &= r2 252d0d1431aSEduard Zingermanlock *(u64*)(r1 + 1) |= r2 253d0d1431aSEduard Zingermanlock *(u64*)(r1 + 1) ^= r2 254d0d1431aSEduard Zingerman// CHECK: c3 01 00 00 01 00 00 00 w0 = atomic_fetch_add((u32 *)(r1 + 0x0), w0) 255d0d1431aSEduard Zingerman// CHECK: c3 01 00 00 51 00 00 00 w0 = atomic_fetch_and((u32 *)(r1 + 0x0), w0) 256d0d1431aSEduard Zingerman// CHECK: c3 01 00 00 a1 00 00 00 w0 = atomic_fetch_xor((u32 *)(r1 + 0x0), w0) 257d0d1431aSEduard Zingerman// CHECK: c3 01 00 00 41 00 00 00 w0 = atomic_fetch_or((u32 *)(r1 + 0x0), w0) 258d0d1431aSEduard Zingermanw0 = atomic_fetch_add((u32 *)(r1 + 0), w0) 259d0d1431aSEduard Zingermanw0 = atomic_fetch_and((u32 *)(r1 + 0), w0) 260d0d1431aSEduard Zingermanw0 = atomic_fetch_xor((u32 *)(r1 + 0), w0) 261d0d1431aSEduard Zingermanw0 = atomic_fetch_or((u32 *)(r1 + 0), w0) 262d0d1431aSEduard Zingerman// CHECK: db 01 00 00 01 00 00 00 r0 = atomic_fetch_add((u64 *)(r1 + 0x0), r0) 263d0d1431aSEduard Zingerman// CHECK: db 01 00 00 51 00 00 00 r0 = atomic_fetch_and((u64 *)(r1 + 0x0), r0) 264d0d1431aSEduard Zingerman// CHECK: db 01 00 00 a1 00 00 00 r0 = atomic_fetch_xor((u64 *)(r1 + 0x0), r0) 265d0d1431aSEduard Zingerman// CHECK: db 01 00 00 41 00 00 00 r0 = atomic_fetch_or((u64 *)(r1 + 0x0), r0) 266d0d1431aSEduard Zingermanr0 = atomic_fetch_add((u64 *)(r1 + 0), r0) 267d0d1431aSEduard Zingermanr0 = atomic_fetch_and((u64 *)(r1 + 0), r0) 268d0d1431aSEduard Zingermanr0 = atomic_fetch_xor((u64 *)(r1 + 0), r0) 269d0d1431aSEduard Zingermanr0 = atomic_fetch_or((u64 *)(r1 + 0), r0) 270d0d1431aSEduard Zingerman// CHECK: c3 01 00 00 e1 00 00 00 w0 = xchg32_32(r1 + 0x0, w0) 271d0d1431aSEduard Zingerman// CHECK: db 01 00 00 e1 00 00 00 r0 = xchg_64(r1 + 0x0, r0) 272d0d1431aSEduard Zingermanw0 = xchg32_32(r1 + 0, w0) 273d0d1431aSEduard Zingermanr0 = xchg_64(r1 + 0, r0) 274d0d1431aSEduard Zingerman// CHECK: c3 11 00 00 f1 00 00 00 w0 = cmpxchg32_32(r1 + 0x0, w0, w1) 275d0d1431aSEduard Zingerman// CHECK: db 11 00 00 f1 00 00 00 r0 = cmpxchg_64(r1 + 0x0, r0, r1) 276d0d1431aSEduard Zingermanw0 = cmpxchg32_32(r1 + 0, w0, w1) 277d0d1431aSEduard Zingermanr0 = cmpxchg_64(r1 + 0, r0, r1) 278d0d1431aSEduard Zingerman 279d0d1431aSEduard Zingerman// CHECK: 30 00 00 00 2a 00 00 00 r0 = *(u8 *)skb[0x2a] 280d0d1431aSEduard Zingerman// CHECK: 28 00 00 00 2a 00 00 00 r0 = *(u16 *)skb[0x2a] 281d0d1431aSEduard Zingerman// CHECK: 20 00 00 00 2a 00 00 00 r0 = *(u32 *)skb[0x2a] 282d0d1431aSEduard Zingermanr0 = *(u8*)skb[42] 283d0d1431aSEduard Zingermanr0 = *(u16*)skb[42] 284d0d1431aSEduard Zingermanr0 = *(u32*)skb[42] 285d0d1431aSEduard Zingerman 286d0d1431aSEduard Zingerman// CHECK: 50 10 00 00 00 00 00 00 r0 = *(u8 *)skb[r1] 287d0d1431aSEduard Zingerman// CHECK: 48 10 00 00 00 00 00 00 r0 = *(u16 *)skb[r1] 288d0d1431aSEduard Zingerman// CHECK: 40 10 00 00 00 00 00 00 r0 = *(u32 *)skb[r1] 289d0d1431aSEduard Zingermanr0 = *(u8*)skb[r1] 290d0d1431aSEduard Zingermanr0 = *(u16*)skb[r1] 291d0d1431aSEduard Zingermanr0 = *(u32*)skb[r1] 292*2aacb56eS4ast 293*2aacb56eS4ast// CHECK: bf 10 01 00 01 00 00 00 r0 = addr_space_cast(r1, 0x0, 0x1) 294*2aacb56eS4ast// CHECK: bf 21 01 00 00 00 01 00 r1 = addr_space_cast(r2, 0x1, 0x0) 295*2aacb56eS4ast// CHECK: bf 43 01 00 2a 00 07 00 r3 = addr_space_cast(r4, 0x7, 0x2a) 296*2aacb56eS4astr0 = addr_space_cast(r1, 0, 1) 297*2aacb56eS4astr1 = addr_space_cast(r2, 1, 0) 298*2aacb56eS4astr3 = addr_space_cast(r4, 7, 42) 299