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