232 lines · plain
1; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s2 3foo:4;==---------------------------------------------------------------------------==5; 5.4.2 Logical (immediate)6;==---------------------------------------------------------------------------==7 8 and w0, w0, #19 and x0, x0, #110 and w1, w2, #1511 and x1, x2, #1512 and sp, x5, #~1513 ands w0, w0, #114 ands x0, x0, #115 ands w1, w2, #1516 ands x1, x2, #1517 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, #0x400029 eor x1, x2, #0x800030 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, #0x400035 orr x1, x2, #0x800036 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, #0x141 orr x8, xzr, #0x142 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, w351 and x1, x2, x352 and w1, w2, w3, lsl #253 and x1, x2, x3, lsl #254 and w1, w2, w3, lsr #255 and x1, x2, x3, lsr #256 and w1, w2, w3, asr #257 and x1, x2, x3, asr #258 and w1, w2, w3, ror #259 and x1, x2, x3, ror #260 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, w373 ands x1, x2, x374 ands w1, w2, w3, lsl #275 ands x1, x2, x3, lsl #276 ands w1, w2, w3, lsr #277 ands x1, x2, x3, lsr #278 ands w1, w2, w3, asr #279 ands x1, x2, x3, asr #280 ands w1, w2, w3, ror #281 ands x1, x2, x3, ror #282 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, w395 bic x1, x2, x396 bic w1, w2, w3, lsl #397 bic x1, x2, x3, lsl #398 bic w1, w2, w3, lsr #399 bic x1, x2, x3, lsr #3100 bic w1, w2, w3, asr #3101 bic x1, x2, x3, asr #3102 bic w1, w2, w3, ror #3103 bic x1, x2, x3, ror #3104 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, w3117 bics x1, x2, x3118 bics w1, w2, w3, lsl #3119 bics x1, x2, x3, lsl #3120 bics w1, w2, w3, lsr #3121 bics x1, x2, x3, lsr #3122 bics w1, w2, w3, asr #3123 bics x1, x2, x3, asr #3124 bics w1, w2, w3, ror #3125 bics x1, x2, x3, ror #3126 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, w3139 eon x1, x2, x3140 eon w1, w2, w3, lsl #4141 eon x1, x2, x3, lsl #4142 eon w1, w2, w3, lsr #4143 eon x1, x2, x3, lsr #4144 eon w1, w2, w3, asr #4145 eon x1, x2, x3, asr #4146 eon w1, w2, w3, ror #4147 eon x1, x2, x3, ror #4148 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, w3161 eor x1, x2, x3162 eor w1, w2, w3, lsl #5163 eor x1, x2, x3, lsl #5164 eor w1, w2, w3, lsr #5165 eor x1, x2, x3, lsr #5166 eor w1, w2, w3, asr #5167 eor x1, x2, x3, asr #5168 eor w1, w2, w3, ror #5169 eor x1, x2, x3, ror #5170 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, w3183 orr x1, x2, x3184 orr w1, w2, w3, lsl #6185 orr x1, x2, x3, lsl #6186 orr w1, w2, w3, lsr #6187 orr x1, x2, x3, lsr #6188 orr w1, w2, w3, asr #6189 orr x1, x2, x3, asr #6190 orr w1, w2, w3, ror #6191 orr x1, x2, x3, ror #6192 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, w3205 orn x1, x2, x3206 orn w1, w2, w3, lsl #7207 orn x1, x2, x3, lsl #7208 orn w1, w2, w3, lsr #7209 orn x1, x2, x3, lsr #7210 orn w1, w2, w3, asr #7211 orn x1, x2, x3, asr #7212 orn w1, w2, w3, ror #7213 orn x1, x2, x3, ror #7214 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 226;; Allow all-1 in top bits.227 and w0, w0, #~(0xfe<<24)228 and w1, w1, #~(0xff<<24)229 230; CHECK: and w0, w0, #0x1ffffff231; CHECK: and w1, w1, #0xffffff232