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