617 lines · plain
1// REQUIRES: aarch642// RUN: llvm-mc -filetype=obj -triple=aarch64 %s -o %t.o3// RUN: ld.lld -fix-cortex-a53-843419 -z separate-code -verbose %t.o -o %t2 2>&1 | FileCheck -check-prefix CHECK-PRINT %s4// RUN: llvm-objdump --no-print-imm-hex --triple=aarch64-linux-gnu -d %t2 | FileCheck %s --check-prefixes=CHECK,CHECK-FIX5// RUN: ld.lld %t.o -z separate-code -o %t36// RUN: llvm-objdump --no-print-imm-hex --triple=aarch64-linux-gnu -d %t3 | FileCheck %s --check-prefixes=CHECK,CHECK-NOFIX7// RUN: ld.lld -fix-cortex-a53-843419 -r -z separate-code %t.o -o %t48// RUN: llvm-objdump --no-print-imm-hex --triple=aarch64-linux-gnu -d %t4 | FileCheck %s --check-prefixes=CHECK-RELOCATABLE9// Test cases for Cortex-A53 Erratum 84341910// See ARM-EPM-048406 Cortex_A53_MPCore_Software_Developers_Errata_Notice.pdf11// for full erratum details.12// In Summary13// 1.)14// ADRP (0xff8 or 0xffc).15// 2.)16// - load or store single register or either integer or vector registers.17// - STP or STNP of either vector or vector registers.18// - Advanced SIMD ST1 store instruction.19// - Must not write Rn.20// 3.) optional instruction, can't be a branch, must not write Rn, may read Rn.21// 4.) A load or store instruction from the Load/Store register unsigned22// immediate class using Rn as the base register.23 24// Each section contains a sequence of instructions that should be recognized25// as erratum 843419. The test cases cover the major variations such as:26// - adrp starts at 0xfff8 or 0xfffc.27// - Variations in instruction class for instruction 2.28// - Optional instruction 3 present or not.29// - Load or store for instruction 4.30 31// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 211FF8 in unpatched output.32// CHECK: <t3_ff8_ldr>:33// CHECK-NEXT: 211ff8: f0000260 adrp x0, 0x26000034// CHECK-NEXT: 211ffc: f9400021 ldr x1, [x1]35// CHECK-FIX: 212000: 1400c803 b 0x24400c36// CHECK-NOFIX: 212000: f9400000 ldr x0, [x0]37// CHECK-NEXT: 212004: d65f03c0 ret38// CHECK-RELOCATABLE: <t3_ff8_ldr>:39// CHECK-RELOCATABLE-NEXT: ff8: 90000000 adrp x0, 0x040// CHECK-RELOCATABLE-NEXT: ffc: f9400021 ldr x1, [x1]41// CHECK-RELOCATABLE-NEXT: 1000: f9400000 ldr x0, [x0]42// CHECK-RELOCATABLE-NEXT: 1004: d65f03c0 ret43 44 .section .text.01, "ax", %progbits45 .balign 409646 .globl t3_ff8_ldr47 .type t3_ff8_ldr, %function48 .space 4096 - 849t3_ff8_ldr:50 adrp x0, dat151 ldr x1, [x1, #0]52 ldr x0, [x0, :got_lo12:dat1]53 ret54 55// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 213FF8 in unpatched output.56// CHECK: <t3_ff8_ldrsimd>:57// CHECK-NEXT: 213ff8: b0000260 adrp x0, 0x26000058// CHECK-NEXT: 213ffc: bd400021 ldr s1, [x1]59// CHECK-FIX: 214000: 1400c005 b 0x24401460// CHECK-NOFIX: 214000: f9400402 ldr x2, [x0, #8]61// CHECK-NEXT: 214004: d65f03c0 ret62 .section .text.02, "ax", %progbits63 .balign 409664 .globl t3_ff8_ldrsimd65 .type t3_ff8_ldrsimd, %function66 .space 4096 - 867t3_ff8_ldrsimd:68 adrp x0, dat269 ldr s1, [x1, #0]70 ldr x2, [x0, :got_lo12:dat2]71 ret72 73// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 215FFC in unpatched output.74// CHECK: <t3_ffc_ldrpost>:75// CHECK-NEXT: 215ffc: f0000240 adrp x0, 0x26000076// CHECK-NEXT: 216000: bc408421 ldr s1, [x1], #877// CHECK-FIX: 216004: 1400b806 b 0x24401c78// CHECK-NOFIX: 216004: f9400803 ldr x3, [x0, #16]79// CHECK-NEXT: 216008: d65f03c0 ret80 .section .text.03, "ax", %progbits81 .balign 409682 .globl t3_ffc_ldrpost83 .type t3_ffc_ldrpost, %function84 .space 4096 - 485t3_ffc_ldrpost:86 adrp x0, dat387 ldr s1, [x1], #888 ldr x3, [x0, :got_lo12:dat3]89 ret90 91// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 217FF8 in unpatched output.92// CHECK: <t3_ff8_strpre>:93// CHECK-NEXT: 217ff8: b0000240 adrp x0, 0x26000094// CHECK-NEXT: 217ffc: bc008c21 str s1, [x1, #8]!95// CHECK-FIX: 218000: 1400b009 b 0x24402496// CHECK-NOFIX: 218000: f9400c02 ldr x2, [x0, #24]97// CHECK-NEXT: 218004: d65f03c0 ret98 .section .text.04, "ax", %progbits99 .balign 4096100 .globl t3_ff8_strpre101 .type t3_ff8_strpre, %function102 .space 4096 - 8103t3_ff8_strpre:104 adrp x0, dat1105 str s1, [x1, #8]!106 ldr x2, [x0, :lo12:dat1]107 ret108 109// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 219FFC in unpatched output.110// CHECK: <t3_ffc_str>:111// CHECK-NEXT: 219ffc: f000023c adrp x28, 0x260000112// CHECK-NEXT: 21a000: f9000042 str x2, [x2]113// CHECK-FIX: 21a004: 1400a80a b 0x24402c114// CHECK-NOFIX: 21a004: f900139c str x28, [x28, #32]115// CHECK-NEXT: 21a008: d65f03c0 ret116 .section .text.05, "ax", %progbits117 .balign 4096118 .globl t3_ffc_str119 .type t3_ffc_str, %function120 .space 4096 - 4121t3_ffc_str:122 adrp x28, dat2123 str x2, [x2, #0]124 str x28, [x28, :lo12:dat2]125 ret126 127// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21BFFC in unpatched output.128// CHECK: <t3_ffc_strsimd>:129// CHECK-NEXT: 21bffc: b000023c adrp x28, 0x260000130// CHECK-NEXT: 21c000: b9000044 str w4, [x2]131// CHECK-FIX: 21c004: 1400a00c b 0x244034132// CHECK-NOFIX: 21c004: f9001784 str x4, [x28, #40]133// CHECK-NEXT: 21c008: d65f03c0 ret134 .section .text.06, "ax", %progbits135 .balign 4096136 .globl t3_ffc_strsimd137 .type t3_ffc_strsimd, %function138 .space 4096 - 4139t3_ffc_strsimd:140 adrp x28, dat3141 str w4, [x2, #0]142 str x4, [x28, :lo12:dat3]143 ret144 145// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21DFF8 in unpatched output.146// CHECK: <t3_ff8_ldrunpriv>:147// CHECK-NEXT: 21dff8: f000021d adrp x29, 0x260000148// CHECK-NEXT: 21dffc: 38400841 ldtrb w1, [x2]149// CHECK-FIX: 21e000: 1400980f b 0x24403c150// CHECK-NOFIX: 21e000: f94003bd ldr x29, [x29]151// CHECK-NEXT: 21e004: d65f03c0 ret152 .section .text.07, "ax", %progbits153 .balign 4096154 .globl t3_ff8_ldrunpriv155 .type t3_ff8_ldrunpriv, %function156 .space 4096 - 8157t3_ff8_ldrunpriv:158 adrp x29, dat1159 ldtrb w1, [x2, #0]160 ldr x29, [x29, :got_lo12:dat1]161 ret162 163// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 21FFFC in unpatched output.164// CHECK: <t3_ffc_ldur>:165// CHECK-NEXT: 21fffc: b000021d adrp x29, 0x260000166// CHECK-NEXT: 220000: b8404042 ldur w2, [x2, #4]167// CHECK-FIX: 220004: 14009010 b 0x244044168// CHECK-NOFIX: 220004: f94007bd ldr x29, [x29, #8]169// CHECK-NEXT: 220008: d65f03c0 ret170 .balign 4096171 .globl t3_ffc_ldur172 .type t3_ffc_ldur, %function173 .space 4096 - 4174t3_ffc_ldur:175 adrp x29, dat2176 ldur w2, [x2, #4]177 ldr x29, [x29, :got_lo12:dat2]178 ret179 180// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 221FFC in unpatched output.181// CHECK: <t3_ffc_sturh>:182// CHECK-NEXT: 221ffc: f00001f2 adrp x18, 0x260000183// CHECK-NEXT: 222000: 78004043 sturh w3, [x2, #4]184// CHECK-FIX: 222004: 14008812 b 0x24404c185// CHECK-NOFIX: 222004: f9400a41 ldr x1, [x18, #16]186// CHECK-NEXT: 222008: d65f03c0 ret187 .section .text.09, "ax", %progbits188 .balign 4096189 .globl t3_ffc_sturh190 .type t3_ffc_sturh, %function191 .space 4096 - 4192t3_ffc_sturh:193 adrp x18, dat3194 sturh w3, [x2, #4]195 ldr x1, [x18, :got_lo12:dat3]196 ret197 198// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 223FF8 in unpatched output.199// CHECK: <t3_ff8_literal>:200// CHECK-NEXT: 223ff8: b00001f2 adrp x18, 0x260000201// CHECK-NEXT: 223ffc: 58ffffe3 ldr x3, 0x223ff8202// CHECK-FIX: 224000: 14008015 b 0x244054203// CHECK-NOFIX: 224000: f9400e52 ldr x18, [x18, #24]204// CHECK-NEXT: 224004: d65f03c0 ret205 .section .text.10, "ax", %progbits206 .balign 4096207 .globl t3_ff8_literal208 .type t3_ff8_literal, %function209 .space 4096 - 8210t3_ff8_literal:211 adrp x18, dat1212 ldr x3, t3_ff8_literal213 ldr x18, [x18, :lo12:dat1]214 ret215 216// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 225FFC in unpatched output.217// CHECK: <t3_ffc_register>:218// CHECK-NEXT: 225ffc: f00001cf adrp x15, 0x260000219// CHECK-NEXT: 226000: f8616843 ldr x3, [x2, x1]220// CHECK-FIX: 226004: 14007816 b 0x24405c221// CHECK-NOFIX: 226004: f94011ea ldr x10, [x15, #32]222// CHECK-NEXT: 226008: d65f03c0 ret223 .section .text.11, "ax", %progbits224 .balign 4096225 .globl t3_ffc_register226 .type t3_ffc_register, %function227 .space 4096 - 4228t3_ffc_register:229 adrp x15, dat2230 ldr x3, [x2, x1]231 ldr x10, [x15, :lo12:dat2]232 ret233 234// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 227FF8 in unpatched output.235// CHECK: <t3_ff8_stp>:236// CHECK-NEXT: 227ff8: b00001d0 adrp x16, 0x260000237// CHECK-NEXT: 227ffc: a9000861 stp x1, x2, [x3]238// CHECK-FIX: 228000: 14007019 b 0x244064239// CHECK-NOFIX: 228000: f940160d ldr x13, [x16, #40]240// CHECK-NEXT: 228004: d65f03c0 ret241 .section .text.12, "ax", %progbits242 .balign 4096243 .globl t3_ff8_stp244 .type t3_ff8_stp, %function245 .space 4096 - 8246t3_ff8_stp:247 adrp x16, dat3248 stp x1,x2, [x3, #0]249 ldr x13, [x16, :lo12:dat3]250 ret251 252// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 229FFC in unpatched output.253// CHECK: <t3_ffc_stnp>:254// CHECK-NEXT: 229ffc: f00001a7 adrp x7, 0x260000255// CHECK-NEXT: 22a000: a8000861 stnp x1, x2, [x3]256// CHECK-FIX: 22a004: 1400681a b 0x24406c257// CHECK-NOFIX: 22a004: f9400ce9 ldr x9, [x7, #24]258// CHECK-NEXT: 22a008: d65f03c0 ret259 .section .text.13, "ax", %progbits260 .balign 4096261 .globl t3_ffc_stnp262 .type t3_ffc_stnp, %function263 .space 4096 - 4264t3_ffc_stnp:265 adrp x7, dat1266 stnp x1,x2, [x3, #0]267 ldr x9, [x7, :lo12:dat1]268 ret269 270// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22BFFC in unpatched output.271// CHECK: <t3_ffc_st1singlepost>:272// CHECK-NEXT: 22bffc: b00001b7 adrp x23, 0x260000273// CHECK-NEXT: 22c000: 0d820420 st1 { v0.b }[1], [x1], x2274// CHECK-FIX: 22c004: 1400601c b 0x244074275// CHECK-NOFIX: 22c004: f94012f6 ldr x22, [x23, #32]276// CHECK-NEXT: 22c008: d65f03c0 ret277 .section .text.14, "ax", %progbits278 .balign 4096279 .globl t3_ffc_st1singlepost280 .type t3_ffc_st1singlepost, %function281 .space 4096 - 4282t3_ffc_st1singlepost:283 adrp x23, dat2284 st1 { v0.b }[1], [x1], x2285 ldr x22, [x23, :lo12:dat2]286 ret287 288// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22DFF8 in unpatched output.289// CHECK: <t3_ff8_st1multiple>:290// CHECK-NEXT: 22dff8: f0000197 adrp x23, 0x260000291// CHECK-NEXT: 22dffc: 4c00a020 st1 { v0.16b, v1.16b }, [x1]292// CHECK-FIX: 22e000: 1400581f b 0x24407c293// CHECK-NOFIX: 22e000: f94016f8 ldr x24, [x23, #40]294// CHECK-NEXT: 22e004: d65f03c0 ret295 .section .text.15, "ax", %progbits296 .balign 4096297 .globl t3_ff8_st1multiple298 .type t3_ff8_st1muliple, %function299 .space 4096 - 8300t3_ff8_st1multiple:301 adrp x23, dat3302 st1 { v0.16b, v1.16b }, [x1]303 ldr x24, [x23, :lo12:dat3]304 ret305 306// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 22FFF8 in unpatched output.307// CHECK: <t4_ff8_ldr>:308// CHECK-NEXT: 22fff8: b0000180 adrp x0, 0x260000309// CHECK-NEXT: 22fffc: f9400021 ldr x1, [x1]310// CHECK-NEXT: 230000: 8b000042 add x2, x2, x0311// CHECK-FIX: 230004: 14005020 b 0x244084312// CHECK-NOFIX: 230004: f9400002 ldr x2, [x0]313// CHECK-NEXT: 230008: d65f03c0 ret314 .section .text.16, "ax", %progbits315 .balign 4096316 .globl t4_ff8_ldr317 .type t4_ff8_ldr, %function318 .space 4096 - 8319t4_ff8_ldr:320 adrp x0, dat1321 ldr x1, [x1, #0]322 add x2, x2, x0323 ldr x2, [x0, :got_lo12:dat1]324 ret325 326// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 231FFC in unpatched output.327// CHECK: <t4_ffc_str>:328// CHECK-NEXT: 231ffc: f000017c adrp x28, 0x260000329// CHECK-NEXT: 232000: f9000042 str x2, [x2]330// CHECK-NEXT: 232004: cb020020 sub x0, x1, x2331// CHECK-FIX: 232008: 14004821 b 0x24408c332// CHECK-NOFIX: 232008: f900079b str x27, [x28, #8]333// CHECK-NEXT: 23200c: d65f03c0 ret334 .section .text.17, "ax", %progbits335 .balign 4096336 .globl t4_ffc_str337 .type t4_ffc_str, %function338 .space 4096 - 4339t4_ffc_str:340 adrp x28, dat2341 str x2, [x2, #0]342 sub x0, x1, x2343 str x27, [x28, :got_lo12:dat2]344 ret345 346// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 233FF8 in unpatched output.347// CHECK: <t4_ff8_stp>:348// CHECK-NEXT: 233ff8: b0000170 adrp x16, 0x260000349// CHECK-NEXT: 233ffc: a9000861 stp x1, x2, [x3]350// CHECK-NEXT: 234000: 9b107e03 mul x3, x16, x16351// CHECK-FIX: 234004: 14004024 b 0x244094352// CHECK-NOFIX: 234004: f9400a0e ldr x14, [x16, #16]353// CHECK-NEXT: 234008: d65f03c0 ret354 .section .text.18, "ax", %progbits355 .balign 4096356 .globl t4_ff8_stp357 .type t4_ff8_stp, %function358 .space 4096 - 8359t4_ff8_stp:360 adrp x16, dat3361 stp x1,x2, [x3, #0]362 mul x3, x16, x16363 ldr x14, [x16, :got_lo12:dat3]364 ret365 366// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 235FF8 in unpatched output.367// CHECK: <t4_ff8_stppre>:368// CHECK-NEXT: 235ff8: f0000150 adrp x16, 0x260000369// CHECK-NEXT: 235ffc: a9810861 stp x1, x2, [x3, #16]!370// CHECK-NEXT: 236000: 9b107e03 mul x3, x16, x16371// CHECK-FIX: 236004: 14003826 b 0x24409c372// CHECK-NOFIX: 236004: f940060e ldr x14, [x16, #8]373// CHECK-NEXT: 236008: d65f03c0 ret374 .section .text.19, "ax", %progbits375 .balign 4096376 .globl t4_ff8_stppre377 .type t4_ff8_stppre, %function378 .space 4096 - 8379t4_ff8_stppre:380 adrp x16, dat1381 stp x1,x2, [x3, #16]!382 mul x3, x16, x16383 ldr x14, [x16, #8]384 ret385 386// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 237FF8 in unpatched output.387// CHECK: <t4_ff8_stppost>:388// CHECK-NEXT: 237ff8: b0000150 adrp x16, 0x260000389// CHECK-NEXT: 237ffc: a8810861 stp x1, x2, [x3], #16390// CHECK-NEXT: 238000: 9b107e03 mul x3, x16, x16391// CHECK-FIX: 238004: 14003028 b 0x2440a4392// CHECK-NOFIX: 238004: f940060e ldr x14, [x16, #8]393// CHECK-NEXT: 238008: d65f03c0 ret394 .section .text.20, "ax", %progbits395 .balign 4096396 .globl t4_ff8_stppost397 .type t4_ff8_stppost, %function398 .space 4096 - 8399t4_ff8_stppost:400 adrp x16, dat2401 stp x1,x2, [x3], #16402 mul x3, x16, x16403 ldr x14, [x16, #8]404 ret405 406// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 239FFC in unpatched output.407// CHECK: <t4_ffc_stpsimd>:408// CHECK-NEXT: 239ffc: f0000130 adrp x16, 0x260000409// CHECK-NEXT: 23a000: ad000861 stp q1, q2, [x3]410// CHECK-NEXT: 23a004: 9b107e03 mul x3, x16, x16411// CHECK-FIX: 23a008: 14002829 b 0x2440ac412// CHECK-NOFIX: 23a008: f940060e ldr x14, [x16, #8]413// CHECK-NEXT: 23a00c: d65f03c0 ret414 .section .text.21, "ax", %progbits415 .balign 4096416 .globl t4_ffc_stpsimd417 .type t4_ffc_stpsimd, %function418 .space 4096 - 4419t4_ffc_stpsimd:420 adrp x16, dat3421 stp q1,q2, [x3, #0]422 mul x3, x16, x16423 ldr x14, [x16, #8]424 ret425 426// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23BFFC in unpatched output.427// CHECK: <t4_ffc_stnp>:428// CHECK-NEXT: 23bffc: b0000127 adrp x7, 0x260000429// CHECK-NEXT: 23c000: a8000861 stnp x1, x2, [x3]430// CHECK-NEXT: 23c004: d503201f nop431// CHECK-FIX: 23c008: 1400202b b 0x2440b4432// CHECK-NOFIX: 23c008: f94000ea ldr x10, [x7]433// CHECK-NEXT: 23c00c: d65f03c0 ret434 .section .text.22, "ax", %progbits435 .balign 4096436 .globl t4_ffc_stnp437 .type t4_ffc_stnp, %function438 .space 4096 - 4439t4_ffc_stnp:440 adrp x7, dat1441 stnp x1,x2, [x3, #0]442 nop443 ldr x10, [x7, :got_lo12:dat1]444 ret445 446// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23DFFC in unpatched output.447// CHECK: <t4_ffc_st1>:448// CHECK-NEXT: 23dffc: f0000118 adrp x24, 0x260000449// CHECK-NEXT: 23e000: 4d008020 st1 { v0.s }[2], [x1]450// CHECK-NEXT: 23e004: f94006f6 ldr x22, [x23, #8]451// CHECK-FIX: 23e008: 1400182d b 0x2440bc452// CHECK-NOFIX: 23e008: f93fff18 str x24, [x24, #32760]453// CHECK-NEXT: 23e00c: d65f03c0 ret454 .section .text.23, "ax", %progbits455 .balign 4096456 .globl t4_ffc_st1457 .type t4_ffc_st1, %function458 .space 4096 - 4459t4_ffc_st1:460 adrp x24, dat2461 st1 { v0.s }[2], [x1]462 ldr x22, [x23, :got_lo12:dat2]463 str x24, [x24, #32760]464 ret465 466// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 23FFF8 in unpatched output.467// CHECK: <t3_ff8_ldr_once>:468// CHECK-NEXT: 23fff8: b0000100 adrp x0, 0x260000469// CHECK-NEXT: 23fffc: 4c827020 st1 { v0.16b }, [x1], x2470// CHECK-FIX: 240000: 14001031 b 0x2440c4471// CHECK-NOFIX: 240000: f9400801 ldr x1, [x0, #16]472// CHECK-NEXT: 240004: f9400802 ldr x2, [x0, #16]473// CHECK-NEXT: 240008: d65f03c0 ret474 .section .text.24, "ax", %progbits475 .balign 4096476 .globl t3_ff8_ldr_once477 .type t3_ff8_ldr_once, %function478 .space 4096 - 8479t3_ff8_ldr_once:480 adrp x0, dat3481 st1 { v0.16b }, [x1], x2482 ldr x1, [x0, #16]483 ldr x2, [x0, #16]484 ret485 486// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 241FF8 in unpatched output.487// CHECK: <t3_ff8_ldxr>:488// CHECK-NEXT: 241ff8: f00000e0 adrp x0, 0x260000489// CHECK-NEXT: 241ffc: c85f7c03 ldxr x3, [x0]490// CHECK-FIX: 242000: 14000833 b 0x2440cc491// CHECK-NOFIX: 242000: f9400801 ldr x1, [x0, #16]492// CHECK: 242004: f9400802 ldr x2, [x0, #16]493// CHECK-NEXT: 242008: d65f03c0 ret494 .section .text.25, "ax", %progbits495 .balign 4096496 .globl t3_ff8_ldxr497 .type t3_ff8_ldxr, %function498 .space 4096 - 8499t3_ff8_ldxr:500 adrp x0, dat3501 ldxr x3, [x0]502 ldr x1, [x0, #16]503 ldr x2, [x0, #16]504 ret505 506// CHECK-PRINT: detected cortex-a53-843419 erratum sequence starting at 243FF8 in unpatched output.507// CHECK: <t3_ff8_stxr>:508// CHECK-NEXT: 243ff8: b00000e0 adrp x0, 0x260000509// CHECK-NEXT: 243ffc: c8047c03 stxr w4, x3, [x0]510// CHECK-FIX: 244000: 14000035 b 0x2440d4511// CHECK-NOFIX: 244000: f9400801 ldr x1, [x0, #16]512// CHECK: 244004: f9400802 ldr x2, [x0, #16]513// CHECK-NEXT: 244008: d65f03c0 ret514 .section .text.26, "ax", %progbits515 .balign 4096516 .globl t3_ff8_stxr517 .type t3_ff8_stxr, %function518 .space 4096 - 8519t3_ff8_stxr:520 adrp x0, dat3521 stxr w4, x3, [x0]522 ldr x1, [x0, #16]523 ldr x2, [x0, #16]524 ret525 526 .text527 .globl _start528 .type _start, %function529_start:530 ret531 532// CHECK-FIX: <__CortexA53843419_212000>:533// CHECK-FIX-NEXT: 24400c: f9400000 ldr x0, [x0]534// CHECK-FIX-NEXT: 244010: 17ff37fd b 0x212004535// CHECK-FIX: <__CortexA53843419_214000>:536// CHECK-FIX-NEXT: 244014: f9400402 ldr x2, [x0, #8]537// CHECK-FIX-NEXT: 244018: 17ff3ffb b 0x214004538// CHECK-FIX: <__CortexA53843419_216004>:539// CHECK-FIX-NEXT: 24401c: f9400803 ldr x3, [x0, #16]540// CHECK-FIX-NEXT: 244020: 17ff47fa b 0x216008541// CHECK-FIX: <__CortexA53843419_218000>:542// CHECK-FIX-NEXT: 244024: f9400c02 ldr x2, [x0, #24]543// CHECK-FIX-NEXT: 244028: 17ff4ff7 b 0x218004544// CHECK-FIX: <__CortexA53843419_21A004>:545// CHECK-FIX-NEXT: 24402c: f900139c str x28, [x28, #32]546// CHECK-FIX-NEXT: 244030: 17ff57f6 b 0x21a008547// CHECK-FIX: <__CortexA53843419_21C004>:548// CHECK-FIX-NEXT: 244034: f9001784 str x4, [x28, #40]549// CHECK-FIX-NEXT: 244038: 17ff5ff4 b 0x21c008550// CHECK-FIX: <__CortexA53843419_21E000>:551// CHECK-FIX-NEXT: 24403c: f94003bd ldr x29, [x29]552// CHECK-FIX-NEXT: 244040: 17ff67f1 b 0x21e004553// CHECK-FIX: <__CortexA53843419_220004>:554// CHECK-FIX-NEXT: 244044: f94007bd ldr x29, [x29, #8]555// CHECK-FIX-NEXT: 244048: 17ff6ff0 b 0x220008556// CHECK-FIX: <__CortexA53843419_222004>:557// CHECK-FIX-NEXT: 24404c: f9400a41 ldr x1, [x18, #16]558// CHECK-FIX-NEXT: 244050: 17ff77ee b 0x222008559// CHECK-FIX: <__CortexA53843419_224000>:560// CHECK-FIX-NEXT: 244054: f9400e52 ldr x18, [x18, #24]561// CHECK-FIX-NEXT: 244058: 17ff7feb b 0x224004562// CHECK-FIX: <__CortexA53843419_226004>:563// CHECK-FIX-NEXT: 24405c: f94011ea ldr x10, [x15, #32]564// CHECK-FIX-NEXT: 244060: 17ff87ea b 0x226008565// CHECK-FIX: <__CortexA53843419_228000>:566// CHECK-FIX-NEXT: 244064: f940160d ldr x13, [x16, #40]567// CHECK-FIX-NEXT: 244068: 17ff8fe7 b 0x228004568// CHECK-FIX: <__CortexA53843419_22A004>:569// CHECK-FIX-NEXT: 24406c: f9400ce9 ldr x9, [x7, #24]570// CHECK-FIX-NEXT: 244070: 17ff97e6 b 0x22a008571// CHECK-FIX: <__CortexA53843419_22C004>:572// CHECK-FIX-NEXT: 244074: f94012f6 ldr x22, [x23, #32]573// CHECK-FIX-NEXT: 244078: 17ff9fe4 b 0x22c008574// CHECK-FIX: <__CortexA53843419_22E000>:575// CHECK-FIX-NEXT: 24407c: f94016f8 ldr x24, [x23, #40]576// CHECK-FIX-NEXT: 244080: 17ffa7e1 b 0x22e004577// CHECK-FIX: <__CortexA53843419_230004>:578// CHECK-FIX-NEXT: 244084: f9400002 ldr x2, [x0]579// CHECK-FIX-NEXT: 244088: 17ffafe0 b 0x230008580// CHECK-FIX: <__CortexA53843419_232008>:581// CHECK-FIX-NEXT: 24408c: f900079b str x27, [x28, #8]582// CHECK-FIX-NEXT: 244090: 17ffb7df b 0x23200c583// CHECK-FIX: <__CortexA53843419_234004>:584// CHECK-FIX-NEXT: 244094: f9400a0e ldr x14, [x16, #16]585// CHECK-FIX-NEXT: 244098: 17ffbfdc b 0x234008586// CHECK-FIX: <__CortexA53843419_236004>:587// CHECK-FIX-NEXT: 24409c: f940060e ldr x14, [x16, #8]588// CHECK-FIX-NEXT: 2440a0: 17ffc7da b 0x236008589// CHECK-FIX: <__CortexA53843419_238004>:590// CHECK-FIX-NEXT: 2440a4: f940060e ldr x14, [x16, #8]591// CHECK-FIX-NEXT: 2440a8: 17ffcfd8 b 0x238008592// CHECK-FIX: <__CortexA53843419_23A008>:593// CHECK-FIX-NEXT: 2440ac: f940060e ldr x14, [x16, #8]594// CHECK-FIX-NEXT: 2440b0: 17ffd7d7 b 0x23a00c595// CHECK-FIX: <__CortexA53843419_23C008>:596// CHECK-FIX-NEXT: 2440b4: f94000ea ldr x10, [x7]597// CHECK-FIX-NEXT: 2440b8: 17ffdfd5 b 0x23c00c598// CHECK-FIX: <__CortexA53843419_23E008>:599// CHECK-FIX-NEXT: 2440bc: f93fff18 str x24, [x24, #32760]600// CHECK-FIX-NEXT: 2440c0: 17ffe7d3 b 0x23e00c601// CHECK-FIX: <__CortexA53843419_240000>:602// CHECK-FIX-NEXT: 2440c4: f9400801 ldr x1, [x0, #16]603// CHECK-FIX-NEXT: 2440c8: 17ffefcf b 0x240004604// CHECK-FIX: <__CortexA53843419_242000>:605// CHECK-FIX-NEXT: 2440cc: f9400801 ldr x1, [x0, #16]606// CHECK-FIX-NEXT: 2440d0: 17fff7cd b 0x242004607// CHECK-FIX: <__CortexA53843419_244000>:608// CHECK-FIX-NEXT: 2440d4: f9400801 ldr x1, [x0, #16]609// CHECK-FIX-NEXT: 2440d8: 17ffffcb b 0x244004610 .data611 .globl dat1612 .globl dat2613 .globl dat3614dat1: .quad 1615dat2: .quad 2616dat3: .quad 3617