1 ; RUN: llvm-mc -triple arm64-apple-darwin -show-encoding < %s | FileCheck %s 2 3 foo: 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 77 L1: 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