179 lines · plain
1// RUN: llvm-mc -triple=aarch64 -show-encoding -mattr=+pauth-lr < %s \2// RUN: | FileCheck %s --check-prefixes=CHECK-ENCODING,CHECK-INST3// RUN: not llvm-mc -triple=aarch64 -show-encoding < %s 2>&1 \4// RUN: | FileCheck %s --check-prefix=CHECK-ERROR5// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+pauth-lr < %s \6// RUN: | llvm-objdump -d --mattr=+pauth-lr - | FileCheck %s --check-prefix=CHECK-DISASS7// RUN: llvm-mc -triple=aarch64 -filetype=obj -mattr=+pauth-lr < %s \8// RUN: | llvm-objdump -d --mattr=-pauth-lr - | FileCheck %s --check-prefix=CHECK-UNKNOWN9 10// Label at address 4, so we can test that the address shows up in the11// disassembly.12 nop13label1:14 15 paciasppc16// CHECK-INST: paciasppc17// CHECK-DISASS: paciasppc18// CHECK-ENCODING: [0xfe,0xa3,0xc1,0xda]19// CHECK-ERROR: instruction requires: pauth-lr20// CHECK-UNKNOWN: dac1a3fe <unknown>21 22 pacibsppc23// CHECK-INST: pacibsppc24// CHECK-DISASS: pacibsppc25// CHECK-ENCODING: [0xfe,0xa7,0xc1,0xda]26// CHECK-ERROR: instruction requires: pauth-lr27// CHECK-UNKNOWN: dac1a7fe <unknown>28 29 pacnbiasppc30// CHECK-INST: pacnbiasppc31// CHECK-DISASS: pacnbiasppc32// CHECK-ENCODING: [0xfe,0x83,0xc1,0xda]33// CHECK-ERROR: instruction requires: pauth-lr34// CHECK-UNKNOWN: dac183fe <unknown>35 36 pacnbibsppc37// CHECK-INST: pacnbibsppc38// CHECK-DISASS: pacnbibsppc39// CHECK-ENCODING: [0xfe,0x87,0xc1,0xda]40// CHECK-ERROR: instruction requires: pauth-lr41// CHECK-UNKNOWN: dac187fe <unknown>42 43 autiasppc label144// CHECK-INST: autiasppc label145// CHECK-DISASS: autiasppc 0x4 <label1>46// CHECK-ENCODING: [0bAAA11111,A,0b100AAAAA,0xf3]47// CHECK-ENCODING: fixup A - offset: 0, value: label1, kind: fixup_aarch64_pcrel_branch1648// CHECK-ERROR: instruction requires: pauth-lr49// CHECK-UNKNOWN: f380009f <unknown>50 51 autibsppc label152// CHECK-INST: autibsppc label153// CHECK-DISASS: autibsppc 0x4 <label1>54// CHECK-ENCODING: [0bAAA11111,A,0b101AAAAA,0xf3]55// CHECK-ENCODING: fixup A - offset: 0, value: label1, kind: fixup_aarch64_pcrel_branch1656// CHECK-ERROR: instruction requires: pauth-lr57// CHECK-UNKNOWN: f3a000bf <unknown>58 59 autibsppc #060// CHECK-INST: autibsppc #061// CHECK-DISASS: autibsppc 0x1c <label1+0x18>62// CHECK-ENCODING: [0x1f,0x00,0xa0,0xf3]63// CHECK-ERROR: instruction requires: pauth-lr64// CHECK-UNKNOWN: f3a0001f <unknown>65 66 autibsppc #-(1<<18)+467// CHECK-INST: autibsppc #-26214068// CHECK-DISASS: autibsppc 0xfffffffffffc0024 <label1+0xfffffffffffc0020>69// CHECK-ENCODING: [0xff,0xff,0xbf,0xf3]70// CHECK-ERROR: instruction requires: pauth-lr71// CHECK-UNKNOWN: f3bfffff <unknown>72 73 autiasppcr x074// CHECK-INST: autiasppcr x075// CHECK-DISASS: autiasppcr x076// CHECK-ENCODING: [0x1e,0x90,0xc1,0xda]77// CHECK-ERROR: instruction requires: pauth-lr78// CHECK-UNKNOWN: dac1901e <unknown>79 80 autibsppcr x181// CHECK-INST: autibsppcr x182// CHECK-DISASS: autibsppcr x183// CHECK-ENCODING: [0x3e,0x94,0xc1,0xda]84// CHECK-ERROR: instruction requires: pauth-lr85// CHECK-UNKNOWN: dac1943e <unknown>86 87 autiasppcr xzr88// CHECK-INST: autiasppcr xzr89// CHECK-DISASS: autiasppcr xzr90// CHECK-ENCODING: [0xfe,0x93,0xc1,0xda]91// CHECK-ERROR: instruction requires: pauth-lr92// CHECK-UNKNOWN: dac193fe <unknown>93 94 autibsppcr xzr95// CHECK-INST: autibsppcr xzr96// CHECK-DISASS: autibsppcr xzr97// CHECK-ENCODING: [0xfe,0x97,0xc1,0xda]98// CHECK-ERROR: instruction requires: pauth-lr99// CHECK-UNKNOWN: dac197fe <unknown>100 101 pacia171615102// CHECK-INST: pacia171615103// CHECK-DISASS: pacia171615104// CHECK-ENCODING: [0xfe,0x8b,0xc1,0xda]105// CHECK-ERROR: instruction requires: pauth-lr106// CHECK-UNKNOWN: dac18bfe <unknown>107 108 pacib171615109// CHECK-INST: pacib171615110// CHECK-DISASS: pacib171615111// CHECK-ENCODING: [0xfe,0x8f,0xc1,0xda]112// CHECK-ERROR: instruction requires: pauth-lr113// CHECK-UNKNOWN: dac18ffe <unknown>114 115 autia171615116// CHECK-INST: autia171615117// CHECK-DISASS: autia171615118// CHECK-ENCODING: [0xfe,0xbb,0xc1,0xda]119// CHECK-ERROR: instruction requires: pauth-lr120// CHECK-UNKNOWN: dac1bbfe <unknown>121 122 autib171615123// CHECK-INST: autib171615124// CHECK-DISASS: autib171615125// CHECK-ENCODING: [0xfe,0xbf,0xc1,0xda]126// CHECK-ERROR: instruction requires: pauth-lr127// CHECK-UNKNOWN: dac1bffe <unknown>128 129 retaasppc label1130// CHECK-INST: retaasppc label1131// CHECK-DISASS: retaasppc 0x4 <label1>132// CHECK-ENCODING: [0bAAA11111,A,0b000AAAAA,0x55]133// CHECK-ENCODING: // fixup A - offset: 0, value: label1, kind: fixup_aarch64_pcrel_branch16134// CHECK-ERROR: instruction requires: pauth-lr135// CHECK-UNKNOWN: 5500021f <unknown>136 137 retabsppc label1138// CHECK-INST: retabsppc label1139// CHECK-DISASS: retabsppc 0x4 <label1>140// CHECK-ENCODING: [0bAAA11111,A,0b001AAAAA,0x55]141// CHECK-ENCODING: // fixup A - offset: 0, value: label1, kind: fixup_aarch64_pcrel_branch16142// CHECK-ERROR: instruction requires: pauth-lr143// CHECK-UNKNOWN: 5520023f <unknown>144 145 retaasppc #0146// CHECK-INST: retaasppc #0147// CHECK-DISASS: retaasppc 0x4c <label1+0x48>148// CHECK-ENCODING: [0x1f,0x00,0x00,0x55]149// CHECK-ERROR: instruction requires: pauth-lr150// CHECK-UNKNOWN: 5500001f <unknown>151 152 retaasppc #-(1<<18)+4153// CHECK-INST: retaasppc #-262140154// CHECK-DISASS: retaasppc 0xfffffffffffc0054 <label1+0xfffffffffffc0050>155// CHECK-ENCODING: [0xff,0xff,0x1f,0x55]156// CHECK-ERROR: instruction requires: pauth-lr157// CHECK-UNKNOWN: 551fffff <unknown>158 159 retaasppcr x2160// CHECK-INST: retaasppcr x2161// CHECK-DISASS: retaasppcr x2162// CHECK-ENCODING: [0xe2,0x0b,0x5f,0xd6]163// CHECK-ERROR: instruction requires: pauth-lr164// CHECK-UNKNOWN: d65f0be2 <unknown>165 166 retabsppcr x3167// CHECK-INST: retabsppcr x3168// CHECK-DISASS: retabsppcr x3169// CHECK-ENCODING: [0xe3,0x0f,0x5f,0xd6]170// CHECK-ERROR: instruction requires: pauth-lr171// CHECK-UNKNOWN: d65f0fe3 <unknown>172 173 pacm174// CHECK-INST: pacm175// CHECK-DISASS: pacm176// CHECK-ENCODING: [0xff,0x24,0x03,0xd5]177// CHECK-ERROR-NOT: instruction requires:178// CHECK-UNKNOWN: d50324ff hint #39179