1; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s 2 3foo: 4;==---------------------------------------------------------------------------== 5; 5.4.2 Logical (immediate) 6;==---------------------------------------------------------------------------== 7 8 and w0, w0, #1 9 and x0, x0, #1 10 and w1, w2, #15 11 and x1, x2, #15 12 and sp, x5, #~15 13 ands w0, w0, #1 14 ands x0, x0, #1 15 ands w1, w2, #15 16 ands x1, x2, #15 17 18; CHECK: and w0, w0, #0x1 ; encoding: [0x00,0x00,0x00,0x12] 19; CHECK: and x0, x0, #0x1 ; encoding: [0x00,0x00,0x40,0x92] 20; CHECK: and w1, w2, #0xf ; encoding: [0x41,0x0c,0x00,0x12] 21; CHECK: and x1, x2, #0xf ; encoding: [0x41,0x0c,0x40,0x92] 22; CHECK: and sp, x5, #0xfffffffffffffff0 ; encoding: [0xbf,0xec,0x7c,0x92] 23; CHECK: ands w0, w0, #0x1 ; encoding: [0x00,0x00,0x00,0x72] 24; CHECK: ands x0, x0, #0x1 ; encoding: [0x00,0x00,0x40,0xf2] 25; CHECK: ands w1, w2, #0xf ; encoding: [0x41,0x0c,0x00,0x72] 26; CHECK: ands x1, x2, #0xf ; encoding: [0x41,0x0c,0x40,0xf2] 27 28 eor w1, w2, #0x4000 29 eor x1, x2, #0x8000 30 31; CHECK: eor w1, w2, #0x4000 ; encoding: [0x41,0x00,0x12,0x52] 32; CHECK: eor x1, x2, #0x8000 ; encoding: [0x41,0x00,0x71,0xd2] 33 34 orr w1, w2, #0x4000 35 orr x1, x2, #0x8000 36 37; CHECK: orr w1, w2, #0x4000 ; encoding: [0x41,0x00,0x12,0x32] 38; CHECK: orr x1, x2, #0x8000 ; encoding: [0x41,0x00,0x71,0xb2] 39 40 orr w8, wzr, #0x1 41 orr x8, xzr, #0x1 42 43; CHECK: orr w8, wzr, #0x1 ; encoding: [0xe8,0x03,0x00,0x32] 44; CHECK: orr x8, xzr, #0x1 ; encoding: [0xe8,0x03,0x40,0xb2] 45 46;==---------------------------------------------------------------------------== 47; 5.5.3 Logical (shifted register) 48;==---------------------------------------------------------------------------== 49 50 and w1, w2, w3 51 and x1, x2, x3 52 and w1, w2, w3, lsl #2 53 and x1, x2, x3, lsl #2 54 and w1, w2, w3, lsr #2 55 and x1, x2, x3, lsr #2 56 and w1, w2, w3, asr #2 57 and x1, x2, x3, asr #2 58 and w1, w2, w3, ror #2 59 and x1, x2, x3, ror #2 60 61; CHECK: and w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x0a] 62; CHECK: and x1, x2, x3 ; encoding: [0x41,0x00,0x03,0x8a] 63; CHECK: and w1, w2, w3, lsl #2 ; encoding: [0x41,0x08,0x03,0x0a] 64; CHECK: and x1, x2, x3, lsl #2 ; encoding: [0x41,0x08,0x03,0x8a] 65; CHECK: and w1, w2, w3, lsr #2 ; encoding: [0x41,0x08,0x43,0x0a] 66; CHECK: and x1, x2, x3, lsr #2 ; encoding: [0x41,0x08,0x43,0x8a] 67; CHECK: and w1, w2, w3, asr #2 ; encoding: [0x41,0x08,0x83,0x0a] 68; CHECK: and x1, x2, x3, asr #2 ; encoding: [0x41,0x08,0x83,0x8a] 69; CHECK: and w1, w2, w3, ror #2 ; encoding: [0x41,0x08,0xc3,0x0a] 70; CHECK: and x1, x2, x3, ror #2 ; encoding: [0x41,0x08,0xc3,0x8a] 71 72 ands w1, w2, w3 73 ands x1, x2, x3 74 ands w1, w2, w3, lsl #2 75 ands x1, x2, x3, lsl #2 76 ands w1, w2, w3, lsr #2 77 ands x1, x2, x3, lsr #2 78 ands w1, w2, w3, asr #2 79 ands x1, x2, x3, asr #2 80 ands w1, w2, w3, ror #2 81 ands x1, x2, x3, ror #2 82 83; CHECK: ands w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x6a] 84; CHECK: ands x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xea] 85; CHECK: ands w1, w2, w3, lsl #2 ; encoding: [0x41,0x08,0x03,0x6a] 86; CHECK: ands x1, x2, x3, lsl #2 ; encoding: [0x41,0x08,0x03,0xea] 87; CHECK: ands w1, w2, w3, lsr #2 ; encoding: [0x41,0x08,0x43,0x6a] 88; CHECK: ands x1, x2, x3, lsr #2 ; encoding: [0x41,0x08,0x43,0xea] 89; CHECK: ands w1, w2, w3, asr #2 ; encoding: [0x41,0x08,0x83,0x6a] 90; CHECK: ands x1, x2, x3, asr #2 ; encoding: [0x41,0x08,0x83,0xea] 91; CHECK: ands w1, w2, w3, ror #2 ; encoding: [0x41,0x08,0xc3,0x6a] 92; CHECK: ands x1, x2, x3, ror #2 ; encoding: [0x41,0x08,0xc3,0xea] 93 94 bic w1, w2, w3 95 bic x1, x2, x3 96 bic w1, w2, w3, lsl #3 97 bic x1, x2, x3, lsl #3 98 bic w1, w2, w3, lsr #3 99 bic x1, x2, x3, lsr #3 100 bic w1, w2, w3, asr #3 101 bic x1, x2, x3, asr #3 102 bic w1, w2, w3, ror #3 103 bic x1, x2, x3, ror #3 104 105; CHECK: bic w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x0a] 106; CHECK: bic x1, x2, x3 ; encoding: [0x41,0x00,0x23,0x8a] 107; CHECK: bic w1, w2, w3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x0a] 108; CHECK: bic x1, x2, x3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x8a] 109; CHECK: bic w1, w2, w3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x0a] 110; CHECK: bic x1, x2, x3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x8a] 111; CHECK: bic w1, w2, w3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x0a] 112; CHECK: bic x1, x2, x3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x8a] 113; CHECK: bic w1, w2, w3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x0a] 114; CHECK: bic x1, x2, x3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x8a] 115 116 bics w1, w2, w3 117 bics x1, x2, x3 118 bics w1, w2, w3, lsl #3 119 bics x1, x2, x3, lsl #3 120 bics w1, w2, w3, lsr #3 121 bics x1, x2, x3, lsr #3 122 bics w1, w2, w3, asr #3 123 bics x1, x2, x3, asr #3 124 bics w1, w2, w3, ror #3 125 bics x1, x2, x3, ror #3 126 127; CHECK: bics w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x6a] 128; CHECK: bics x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xea] 129; CHECK: bics w1, w2, w3, lsl #3 ; encoding: [0x41,0x0c,0x23,0x6a] 130; CHECK: bics x1, x2, x3, lsl #3 ; encoding: [0x41,0x0c,0x23,0xea] 131; CHECK: bics w1, w2, w3, lsr #3 ; encoding: [0x41,0x0c,0x63,0x6a] 132; CHECK: bics x1, x2, x3, lsr #3 ; encoding: [0x41,0x0c,0x63,0xea] 133; CHECK: bics w1, w2, w3, asr #3 ; encoding: [0x41,0x0c,0xa3,0x6a] 134; CHECK: bics x1, x2, x3, asr #3 ; encoding: [0x41,0x0c,0xa3,0xea] 135; CHECK: bics w1, w2, w3, ror #3 ; encoding: [0x41,0x0c,0xe3,0x6a] 136; CHECK: bics x1, x2, x3, ror #3 ; encoding: [0x41,0x0c,0xe3,0xea] 137 138 eon w1, w2, w3 139 eon x1, x2, x3 140 eon w1, w2, w3, lsl #4 141 eon x1, x2, x3, lsl #4 142 eon w1, w2, w3, lsr #4 143 eon x1, x2, x3, lsr #4 144 eon w1, w2, w3, asr #4 145 eon x1, x2, x3, asr #4 146 eon w1, w2, w3, ror #4 147 eon x1, x2, x3, ror #4 148 149; CHECK: eon w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x4a] 150; CHECK: eon x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xca] 151; CHECK: eon w1, w2, w3, lsl #4 ; encoding: [0x41,0x10,0x23,0x4a] 152; CHECK: eon x1, x2, x3, lsl #4 ; encoding: [0x41,0x10,0x23,0xca] 153; CHECK: eon w1, w2, w3, lsr #4 ; encoding: [0x41,0x10,0x63,0x4a] 154; CHECK: eon x1, x2, x3, lsr #4 ; encoding: [0x41,0x10,0x63,0xca] 155; CHECK: eon w1, w2, w3, asr #4 ; encoding: [0x41,0x10,0xa3,0x4a] 156; CHECK: eon x1, x2, x3, asr #4 ; encoding: [0x41,0x10,0xa3,0xca] 157; CHECK: eon w1, w2, w3, ror #4 ; encoding: [0x41,0x10,0xe3,0x4a] 158; CHECK: eon x1, x2, x3, ror #4 ; encoding: [0x41,0x10,0xe3,0xca] 159 160 eor w1, w2, w3 161 eor x1, x2, x3 162 eor w1, w2, w3, lsl #5 163 eor x1, x2, x3, lsl #5 164 eor w1, w2, w3, lsr #5 165 eor x1, x2, x3, lsr #5 166 eor w1, w2, w3, asr #5 167 eor x1, x2, x3, asr #5 168 eor w1, w2, w3, ror #5 169 eor x1, x2, x3, ror #5 170 171; CHECK: eor w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x4a] 172; CHECK: eor x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xca] 173; CHECK: eor w1, w2, w3, lsl #5 ; encoding: [0x41,0x14,0x03,0x4a] 174; CHECK: eor x1, x2, x3, lsl #5 ; encoding: [0x41,0x14,0x03,0xca] 175; CHECK: eor w1, w2, w3, lsr #5 ; encoding: [0x41,0x14,0x43,0x4a] 176; CHECK: eor x1, x2, x3, lsr #5 ; encoding: [0x41,0x14,0x43,0xca] 177; CHECK: eor w1, w2, w3, asr #5 ; encoding: [0x41,0x14,0x83,0x4a] 178; CHECK: eor x1, x2, x3, asr #5 ; encoding: [0x41,0x14,0x83,0xca] 179; CHECK: eor w1, w2, w3, ror #5 ; encoding: [0x41,0x14,0xc3,0x4a] 180; CHECK: eor x1, x2, x3, ror #5 ; encoding: [0x41,0x14,0xc3,0xca] 181 182 orr w1, w2, w3 183 orr x1, x2, x3 184 orr w1, w2, w3, lsl #6 185 orr x1, x2, x3, lsl #6 186 orr w1, w2, w3, lsr #6 187 orr x1, x2, x3, lsr #6 188 orr w1, w2, w3, asr #6 189 orr x1, x2, x3, asr #6 190 orr w1, w2, w3, ror #6 191 orr x1, x2, x3, ror #6 192 193; CHECK: orr w1, w2, w3 ; encoding: [0x41,0x00,0x03,0x2a] 194; CHECK: orr x1, x2, x3 ; encoding: [0x41,0x00,0x03,0xaa] 195; CHECK: orr w1, w2, w3, lsl #6 ; encoding: [0x41,0x18,0x03,0x2a] 196; CHECK: orr x1, x2, x3, lsl #6 ; encoding: [0x41,0x18,0x03,0xaa] 197; CHECK: orr w1, w2, w3, lsr #6 ; encoding: [0x41,0x18,0x43,0x2a] 198; CHECK: orr x1, x2, x3, lsr #6 ; encoding: [0x41,0x18,0x43,0xaa] 199; CHECK: orr w1, w2, w3, asr #6 ; encoding: [0x41,0x18,0x83,0x2a] 200; CHECK: orr x1, x2, x3, asr #6 ; encoding: [0x41,0x18,0x83,0xaa] 201; CHECK: orr w1, w2, w3, ror #6 ; encoding: [0x41,0x18,0xc3,0x2a] 202; CHECK: orr x1, x2, x3, ror #6 ; encoding: [0x41,0x18,0xc3,0xaa] 203 204 orn w1, w2, w3 205 orn x1, x2, x3 206 orn w1, w2, w3, lsl #7 207 orn x1, x2, x3, lsl #7 208 orn w1, w2, w3, lsr #7 209 orn x1, x2, x3, lsr #7 210 orn w1, w2, w3, asr #7 211 orn x1, x2, x3, asr #7 212 orn w1, w2, w3, ror #7 213 orn x1, x2, x3, ror #7 214 215; CHECK: orn w1, w2, w3 ; encoding: [0x41,0x00,0x23,0x2a] 216; CHECK: orn x1, x2, x3 ; encoding: [0x41,0x00,0x23,0xaa] 217; CHECK: orn w1, w2, w3, lsl #7 ; encoding: [0x41,0x1c,0x23,0x2a] 218; CHECK: orn x1, x2, x3, lsl #7 ; encoding: [0x41,0x1c,0x23,0xaa] 219; CHECK: orn w1, w2, w3, lsr #7 ; encoding: [0x41,0x1c,0x63,0x2a] 220; CHECK: orn x1, x2, x3, lsr #7 ; encoding: [0x41,0x1c,0x63,0xaa] 221; CHECK: orn w1, w2, w3, asr #7 ; encoding: [0x41,0x1c,0xa3,0x2a] 222; CHECK: orn x1, x2, x3, asr #7 ; encoding: [0x41,0x1c,0xa3,0xaa] 223; CHECK: orn w1, w2, w3, ror #7 ; encoding: [0x41,0x1c,0xe3,0x2a] 224; CHECK: orn x1, x2, x3, ror #7 ; encoding: [0x41,0x1c,0xe3,0xaa] 225