1; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s 2 3foo: 4 5;----------------------------------------------------------------------------- 6; Unconditional branch (register) instructions. 7;----------------------------------------------------------------------------- 8 9 ret 10; CHECK: encoding: [0xc0,0x03,0x5f,0xd6] 11 ret x1 12; CHECK: encoding: [0x20,0x00,0x5f,0xd6] 13 drps 14; CHECK: encoding: [0xe0,0x03,0xbf,0xd6] 15 eret 16; CHECK: encoding: [0xe0,0x03,0x9f,0xd6] 17 br x5 18; CHECK: encoding: [0xa0,0x00,0x1f,0xd6] 19 blr x9 20; CHECK: encoding: [0x20,0x01,0x3f,0xd6] 21 bl L1 22; CHECK: bl L1 ; encoding: [A,A,A,0b100101AA] 23; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_call26 24 25;----------------------------------------------------------------------------- 26; Contitional branch instructions. 27;----------------------------------------------------------------------------- 28 29 b L1 30; CHECK: b L1 ; encoding: [A,A,A,0b000101AA] 31; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch26 32 b.eq L1 33; CHECK: b.eq L1 ; encoding: [0bAAA00000,A,A,0x54] 34; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 35 b.ne L1 36; CHECK: b.ne L1 ; encoding: [0bAAA00001,A,A,0x54] 37; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 38 b.cs L1 39; CHECK: b.hs L1 ; encoding: [0bAAA00010,A,A,0x54] 40; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 41 b.cc L1 42; CHECK: b.lo L1 ; encoding: [0bAAA00011,A,A,0x54] 43; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 44 b.mi L1 45; CHECK: b.mi L1 ; encoding: [0bAAA00100,A,A,0x54] 46; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 47 b.pl L1 48; CHECK: b.pl L1 ; encoding: [0bAAA00101,A,A,0x54] 49; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 50 b.vs L1 51; CHECK: b.vs L1 ; encoding: [0bAAA00110,A,A,0x54] 52; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 53 b.vc L1 54; CHECK: b.vc L1 ; encoding: [0bAAA00111,A,A,0x54] 55; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 56 b.hi L1 57; CHECK: b.hi L1 ; encoding: [0bAAA01000,A,A,0x54] 58; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 59 b.ls L1 60; CHECK: b.ls L1 ; encoding: [0bAAA01001,A,A,0x54] 61; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 62 b.ge L1 63; CHECK: b.ge L1 ; encoding: [0bAAA01010,A,A,0x54] 64; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 65 b.lt L1 66; CHECK: b.lt L1 ; encoding: [0bAAA01011,A,A,0x54] 67; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 68 b.gt L1 69; CHECK: b.gt L1 ; encoding: [0bAAA01100,A,A,0x54] 70; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 71 b.le L1 72; CHECK: b.le L1 ; encoding: [0bAAA01101,A,A,0x54] 73; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 74 b.al L1 75; CHECK: b.al L1 ; encoding: [0bAAA01110,A,A,0x54] 76; CHECK: fixup A - offset: 0, value: L1, kind: fixup_aarch64_pcrel_branch19 77L1: 78 b #28 79; CHECK: b #28 80 b.lt #28 81; CHECK: b.lt #28 82 b.cc #1048572 83; CHECK: b.lo #1048572 ; encoding: [0xe3,0xff,0x7f,0x54] 84 b #134217724 85; CHECK: b #134217724 ; encoding: [0xff,0xff,0xff,0x15] 86 b #-134217728 87; CHECK: b #-134217728 ; encoding: [0x00,0x00,0x00,0x16] 88 89;----------------------------------------------------------------------------- 90; Compare-and-branch instructions. 91;----------------------------------------------------------------------------- 92 93 cbz w1, foo 94; CHECK: encoding: [0bAAA00001,A,A,0x34] 95 cbz x1, foo 96; CHECK: encoding: [0bAAA00001,A,A,0xb4] 97 cbnz w2, foo 98; CHECK: encoding: [0bAAA00010,A,A,0x35] 99 cbnz x2, foo 100; CHECK: encoding: [0bAAA00010,A,A,0xb5] 101 cbz w1, #28 102; CHECK: cbz w1, #28 103 cbz w20, #1048572 104; CHECK: cbz w20, #1048572 ; encoding: [0xf4,0xff,0x7f,0x34] 105 cbnz x2, #-1048576 106; CHECK: cbnz x2, #-1048576 ; encoding: [0x02,0x00,0x80,0xb5] 107 108 109;----------------------------------------------------------------------------- 110; Bit-test-and-branch instructions. 111;----------------------------------------------------------------------------- 112 113 tbz x1, #3, foo 114; CHECK: encoding: [0bAAA00001,A,0b00011AAA,0x36] 115 tbnz x1, #63, foo 116; CHECK: encoding: [0bAAA00001,A,0b11111AAA,0xb7] 117 118 tbz w1, #3, foo 119; CHECK: encoding: [0bAAA00001,A,0b00011AAA,0x36] 120 tbnz w1, #31, foo 121; CHECK: encoding: [0bAAA00001,A,0b11111AAA,0x37] 122 123 tbz w1, #3, #28 124; CHECK: tbz w1, #3, #28 125 tbz w3, #5, #32764 126; CHECK: tbz w3, #5, #32764 ; encoding: [0xe3,0xff,0x2b,0x36] 127 tbnz x3, #8, #-32768 128; CHECK: tbnz w3, #8, #-32768 ; encoding: [0x03,0x00,0x44,0x37] 129 130;----------------------------------------------------------------------------- 131; Exception generation instructions. 132;----------------------------------------------------------------------------- 133 134 brk #1 135; CHECK: encoding: [0x20,0x00,0x20,0xd4] 136 dcps1 #2 137; CHECK: encoding: [0x41,0x00,0xa0,0xd4] 138 dcps2 #3 139; CHECK: encoding: [0x62,0x00,0xa0,0xd4] 140 dcps3 #4 141; CHECK: encoding: [0x83,0x00,0xa0,0xd4] 142 hlt #5 143; CHECK: encoding: [0xa0,0x00,0x40,0xd4] 144 hvc #6 145; CHECK: encoding: [0xc2,0x00,0x00,0xd4] 146 smc #7 147; CHECK: encoding: [0xe3,0x00,0x00,0xd4] 148 svc #8 149; CHECK: encoding: [0x01,0x01,0x00,0xd4] 150 151; The immediate defaults to zero for DCPSn 152 dcps1 153 dcps2 154 dcps3 155 156; CHECK: dcps1 ; encoding: [0x01,0x00,0xa0,0xd4] 157; CHECK: dcps2 ; encoding: [0x02,0x00,0xa0,0xd4] 158; CHECK: dcps3 ; encoding: [0x03,0x00,0xa0,0xd4] 159 160