brintos

brintos / llvm-project-archived public Read only

0
0
Text · 15.3 KiB · f6be586 Raw
450 lines · plain
1; RUN: llc -relocation-model=static    -mtriple=armv7a--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM_RO_ABS --check-prefix=ARM_RW_ABS2; RUN: llc -relocation-model=ropi      -mtriple=armv7a--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM_RO_PC  --check-prefix=ARM_RW_ABS3; RUN: llc -relocation-model=rwpi      -mtriple=armv7a--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM_RO_ABS --check-prefix=ARM_RW_SB4; RUN: llc -relocation-model=ropi-rwpi -mtriple=armv7a--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=ARM_RO_PC  --check-prefix=ARM_RW_SB5 6; RUN: llc -relocation-model=static    -mtriple=thumbv7m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2_RO_ABS --check-prefix=THUMB2_RW_ABS7; RUN: llc -relocation-model=ropi      -mtriple=thumbv7m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2_RO_PC  --check-prefix=THUMB2_RW_ABS8; RUN: llc -relocation-model=rwpi      -mtriple=thumbv7m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2_RO_ABS  --check-prefix=THUMB2_RW_SB9; RUN: llc -relocation-model=ropi-rwpi -mtriple=thumbv7m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB2_RO_PC  --check-prefix=THUMB2_RW_SB10 11; RUN: llc -relocation-model=static    -mtriple=thumbv6m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1_RO_ABS --check-prefix=THUMB1_RW_ABS12; RUN: llc -relocation-model=ropi      -mtriple=thumbv6m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1_RO_PC  --check-prefix=THUMB1_RW_ABS13; RUN: llc -relocation-model=rwpi      -mtriple=thumbv6m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1_RO_ABS --check-prefix=THUMB1_RW_SB14; RUN: llc -relocation-model=ropi-rwpi -mtriple=thumbv6m--none-eabi < %s | FileCheck %s --check-prefix=CHECK --check-prefix=THUMB1_RO_PC  --check-prefix=THUMB1_RW_SB15 16; RUN: llc -relocation-model=rwpi      -mtriple=armv7a--none-eabi   -mattr=no-movt < %s | FileCheck %s --check-prefix=CHECK --check-prefix=NO_MOVT_ARM_RO_ABS --check-prefix=NO_MOVT_ARM_RW_SB17; RUN: llc -relocation-model=ropi-rwpi -mtriple=armv7a--none-eabi   -mattr=no-movt < %s | FileCheck %s --check-prefix=CHECK --check-prefix=NO_MOVT_ARM_RO_PC  --check-prefix=NO_MOVT_ARM_RW_SB18 19; RUN: llc -relocation-model=rwpi      -mtriple=thumbv7m--none-eabi -mattr=no-movt < %s | FileCheck %s --check-prefix=CHECK --check-prefix=NO_MOVT_THUMB2_RO_ABS  --check-prefix=NO_MOVT_THUMB2_RW_SB20; RUN: llc -relocation-model=ropi-rwpi -mtriple=thumbv7m--none-eabi -mattr=no-movt < %s | FileCheck %s --check-prefix=CHECK --check-prefix=NO_MOVT_THUMB2_RO_PC  --check-prefix=NO_MOVT_THUMB2_RW_SB21 22target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"23 24@a = external global i32, align 425@b = external constant i32, align 426@c0 = global i32 42, align 427@c1 = alias i32, ptr @c028@d0 = constant i32 42, align 429@d1 = alias i32, ptr @d030@take_addr_func_alias1 = alias ptr (), ptr @take_addr_func_alias31 32define i32 @read() {33entry:34  %0 = load i32, ptr @a, align 435  ret i32 %036; CHECK-LABEL: read:37 38; ARM_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a39; ARM_RW_ABS: movt    r[[REG]], :upper16:a40; ARM_RW_ABS: ldr     r0, [r[[REG]]]41 42; ARM_RW_SB: movw    r[[REG:[0-9]]], :lower16:a(sbrel)43; ARM_RW_SB: movt    r[[REG]], :upper16:a(sbrel)44; ARM_RW_SB: ldr     r0, [r9, r[[REG]]]45 46; NO_MOVT_ARM_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]47; NO_MOVT_ARM_RW_SB: ldr     r0, [r9, r[[REG]]]48 49; THUMB2_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a50; THUMB2_RW_ABS: movt    r[[REG]], :upper16:a51; THUMB2_RW_ABS: ldr     r0, [r[[REG]]]52 53; THUMB2_RW_SB: movw    r[[REG:[0-9]]], :lower16:a(sbrel)54; THUMB2_RW_SB: movt    r[[REG]], :upper16:a(sbrel)55; THUMB2_RW_SB: ldr.w   r0, [r9, r[[REG]]]56 57; NO_MOVT_THUMB2_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]58; NO_MOVT_THUMB2_RW_SB: ldr.w   r0, [r9, r[[REG]]]59 60; THUMB1_RW_ABS: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]61; THUMB1_RW_ABS: ldr     r0, [r[[REG]]]62 63; THUMB1_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]64; THUMB1_RW_SB: mov     r[[REG_SB:[0-9]+]], r965; THUMB1_RW_SB: ldr     r0, [r[[REG_SB]], r[[REG]]]66 67; CHECK: {{(bx lr|pop)}}68 69; NO_MOVT_ARM_RW_SB: [[LCPI]]70; NO_MOVT_ARM_RW_SB: .long   a(sbrel)71 72; NO_MOVT_THUMB2_RW_SB: [[LCPI]]73; NO_MOVT_THUMB2_RW_SB: .long   a(sbrel)74 75; THUMB1_RW_ABS: [[LCPI]]76; THUMB1_RW_ABS-NEXT: .long a77 78; THUMB1_RW_SB: [[LCPI]]79; THUMB1_RW_SB: .long   a(sbrel)80}81 82define void @write(i32 %v)  {83entry:84  store i32 %v, ptr @a, align 485  ret void86; CHECK-LABEL: write:87 88; ARM_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a89; ARM_RW_ABS: movt    r[[REG]], :upper16:a90; ARM_RW_ABS: str     r0, [r[[REG:[0-9]]]]91 92; ARM_RW_SB: movw    r[[REG:[0-9]]], :lower16:a93; ARM_RW_SB: movt    r[[REG]], :upper16:a94; ARM_RW_SB: str     r0, [r9, r[[REG:[0-9]]]]95 96; NO_MOVT_ARM_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]97; NO_MOVT_ARM_RW_SB: str     r0, [r9, r[[REG]]]98 99; THUMB2_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a100; THUMB2_RW_ABS: movt    r[[REG]], :upper16:a101; THUMB2_RW_ABS: str     r0, [r[[REG]]]102 103; THUMB2_RW_SB: movw    r[[REG:[0-9]]], :lower16:a(sbrel)104; THUMB2_RW_SB: movt    r[[REG]], :upper16:a(sbrel)105; THUMB2_RW_SB: str.w   r0, [r9, r[[REG]]]106 107; NO_MOVT_THUMB2_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]108; NO_MOVT_THUMB2_RW_SB: str.w   r0, [r9, r[[REG]]]109 110; THUMB1_RW_ABS: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]111; THUMB1_RW_ABS: str     r0, [r[[REG]]]112 113; THUMB1_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]114; THUMB1_RW_SB: mov     r[[REG_SB:[0-9]+]], r9115; THUMB1_RW_SB: str     r0, [r[[REG_SB]], r[[REG]]]116 117; CHECK: {{(bx lr|pop)}}118 119; NO_MOVT_ARM_RW_SB: [[LCPI]]120; NO_MOVT_ARM_RW_SB: .long   a(sbrel)121 122; NO_MOVT_THUMB2_RW_SB: [[LCPI]]123; NO_MOVT_THUMB2_RW_SB: .long   a(sbrel)124 125; THUMB1_RW_ABS: [[LCPI]]126; THUMB1_RW_ABS-NEXT: .long a127 128; THUMB1_RW_SB: [[LCPI]]129; THUMB1_RW_SB: .long   a(sbrel)130}131 132define i32 @read_const()  {133entry:134  %0 = load i32, ptr @b, align 4135  ret i32 %0136; CHECK-LABEL: read_const:137 138; ARM_RO_ABS: movw    r[[reg:[0-9]]], :lower16:b139; ARM_RO_ABS: movt    r[[reg]], :upper16:b140; ARM_RO_ABS: ldr     r0, [r[[reg]]]141 142; NO_MOVT_ARM_RO_ABS: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]143; NO_MOVT_ARM_RO_ABS: ldr     r0, [r[[REG]]]144 145; ARM_RO_PC: movw    r[[REG:[0-9]]], :lower16:(b-([[LPC:.LPC[0-9]+_[0-9]+]]+8))146; ARM_RO_PC: movt    r[[REG]], :upper16:(b-([[LPC]]+8))147; ARM_RO_PC: [[LPC]]:148; ARM_RO_PC-NEXT: ldr     r0, [pc, r[[REG]]]149 150; NO_MOVT_ARM_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]151; NO_MOVT_ARM_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:152; NO_MOVT_ARM_RO_PC: ldr     r0, [pc, r[[REG]]]153 154; THUMB2_RO_ABS: movw    r[[REG:[0-9]]], :lower16:b155; THUMB2_RO_ABS: movt    r[[REG]], :upper16:b156; THUMB2_RO_ABS: ldr     r0, [r[[REG]]]157 158; NO_MOVT_THUMB2_RO_ABS: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]159; NO_MOVT_THUMB2_RO_ABS: ldr     r0, [r[[REG]]]160 161; THUMB2_RO_PC: movw    r[[REG:[0-9]]], :lower16:(b-([[LPC:.LPC[0-9]+_[0-9]+]]+4))162; THUMB2_RO_PC: movt    r[[REG]], :upper16:(b-([[LPC]]+4))163; THUMB2_RO_PC: [[LPC]]:164; THUMB2_RO_PC-NEXT: add     r[[REG]], pc165; THUMB2_RO_PC: ldr     r0, [r[[REG]]]166 167; NO_MOVT_THUMB2_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]168; NO_MOVT_THUMB2_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:169; NO_MOVT_THUMB2_RO_PC-NEXT: add     r[[REG]], pc170; NO_MOVT_THUMB2_RO_PC: ldr     r0, [r[[REG]]]171 172 173; THUMB1_RO_ABS: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]174; THUMB1_RO_ABS: ldr     r0, [r[[REG]]]175 176; THUMB1_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]177; THUMB1_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:178; THUMB1_RO_PC-NEXT: add     r[[REG]], pc179; THUMB1_RO_PC: ldr     r0, [r[[REG]]]180 181; CHECK: {{(bx lr|pop)}}182 183; NO_MOVT_ARM_RO_ABS: [[LCPI]]184; NO_MOVT_ARM_RO_ABS-NEXT: .long b185 186; NO_MOVT_THUMB2_RO_ABS: [[LCPI]]187; NO_MOVT_THUMB2_RO_ABS-NEXT: .long b188 189; THUMB1_RO_ABS: [[LCPI]]190; THUMB1_RO_ABS-NEXT: .long b191 192; NO_MOVT_ARM_RO_PC: [[LCPI]]193; NO_MOVT_ARM_RO_PC-NEXT: .long b-([[LPC]]+8)194 195; NO_MOVT_THUMB2_RO_PC: [[LCPI]]196; NO_MOVT_THUMB2_RO_PC-NEXT: .long b-([[LPC]]+4)197 198; THUMB1_RO_PC: [[LCPI]]199; THUMB1_RO_PC-NEXT: .long b-([[LPC]]+4)200}201 202define ptr @take_addr()  {203entry:204  ret ptr @a205; CHECK-LABEL: take_addr:206 207; ARM_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a208; ARM_RW_ABS: movt    r[[REG]], :upper16:a209 210; ARM_RW_SB: movw    r[[REG:[0-9]]], :lower16:a(sbrel)211; ARM_RW_SB: movt    r[[REG]], :upper16:a(sbrel)212; ARM_RW_SB: add     r0, r9, r[[REG]]213 214; NO_MOVT_ARM_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]215; NO_MOVT_ARM_RW_SB: add     r0, r9, r[[REG]]216 217; THUMB2_RW_ABS: movw    r[[REG:[0-9]]], :lower16:a218; THUMB2_RW_ABS: movt    r[[REG]], :upper16:a219 220; THUMB2_RW_SB: movw    r[[REG:[0-9]]], :lower16:a(sbrel)221; THUMB2_RW_SB: movt    r[[REG]], :upper16:a(sbrel)222; THUMB2_RW_SB: add     r0, r9223 224; NO_MOVT_THUMB2_RW_SB: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]225; NO_MOVT_THUMB2_RW_SB: add     r0, r9226 227; THUMB1_RW_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]228 229; THUMB1_RW_SB: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]230; THUMB1_RW_SB: mov     r[[REG_SB:[0-9]+]], r9231; THUMB1_RW_SB: adds    r[[REG]], r[[REG_SB]], r[[REG]]232 233; CHECK: {{(bx lr|pop)}}234 235; NO_MOVT_ARM_RW_SB: [[LCPI]]236; NO_MOVT_ARM_RW_SB: .long   a(sbrel)237 238; NO_MOVT_THUMB2_RW_SB: [[LCPI]]239; NO_MOVT_THUMB2_RW_SB: .long   a(sbrel)240 241; THUMB1_RW_ABS: [[LCPI]]242; THUMB1_RW_ABS-NEXT: .long a243 244; THUMB1_RW_SB: [[LCPI]]245; THUMB1_RW_SB: .long   a(sbrel)246}247 248define ptr @take_addr_const()  {249entry:250  ret ptr @b251; CHECK-LABEL: take_addr_const:252 253; ARM_RO_ABS: movw    r[[REG:[0-9]]], :lower16:b254; ARM_RO_ABS: movt    r[[REG]], :upper16:b255 256; NO_MOVT_ARM_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]257 258; ARM_RO_PC: movw    r[[REG:[0-9]]], :lower16:(b-([[LPC:.LPC[0-9]+_[0-9]+]]+8))259; ARM_RO_PC: movt    r[[REG]], :upper16:(b-([[LPC]]+8))260; ARM_RO_PC: [[LPC]]:261; ARM_RO_PC-NEXT: add     r0, pc, r[[REG:[0-9]]]262 263; NO_MOVT_ARM_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]264; NO_MOVT_ARM_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:265; NO_MOVT_ARM_RO_PC-NEXT: add     r0, pc, r[[REG]]266 267; THUMB2_RO_ABS: movw    r[[REG:[0-9]]], :lower16:b268; THUMB2_RO_ABS: movt    r[[REG]], :upper16:b269 270; NO_MOVT_THUMB2_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]271 272; THUMB2_RO_PC: movw    r0, :lower16:(b-([[LPC:.LPC[0-9]+_[0-9]+]]+4))273; THUMB2_RO_PC: movt    r0, :upper16:(b-([[LPC]]+4))274; THUMB2_RO_PC: [[LPC]]:275; THUMB2_RO_PC-NEXT: add     r0, pc276 277; NO_MOVT_THUMB2_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]278; NO_MOVT_THUMB2_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:279; NO_MOVT_THUMB2_RO_PC-NEXT: add     r[[REG]], pc280 281; THUMB1_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]282 283; THUMB1_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]284; THUMB1_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:285; THUMB1_RO_PC-NEXT: add     r[[REG]], pc286 287; CHECK: {{(bx lr|pop)}}288 289; NO_MOVT_ARM_RO_ABS: [[LCPI]]290; NO_MOVT_ARM_RO_ABS-NEXT: .long b291 292; NO_MOVT_THUMB2_RO_ABS: [[LCPI]]293; NO_MOVT_THUMB2_RO_ABS-NEXT: .long b294 295; THUMB1_RO_ABS: [[LCPI]]296; THUMB1_RO_ABS-NEXT: .long b297 298; NO_MOVT_ARM_RO_PC: [[LCPI]]299; NO_MOVT_ARM_RO_PC-NEXT: .long b-([[LPC]]+8)300 301; NO_MOVT_THUMB2_RO_PC: [[LCPI]]302; NO_MOVT_THUMB2_RO_PC-NEXT: .long b-([[LPC]]+4)303 304; THUMB1_RO_PC: [[LCPI]]305; THUMB1_RO_PC-NEXT: .long b-([[LPC]]+4)306}307 308define ptr @take_addr_func()  {309entry:310  ret ptr @take_addr_func311; CHECK-LABEL: take_addr_func:312 313; ARM_RO_ABS: movw    r[[REG:[0-9]]], :lower16:take_addr_func314; ARM_RO_ABS: movt    r[[REG]], :upper16:take_addr_func315 316; NO_MOVT_ARM_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]317 318; ARM_RO_PC: movw    r[[REG:[0-9]]], :lower16:(take_addr_func-([[LPC:.LPC[0-9]+_[0-9]+]]+8))319; ARM_RO_PC: movt    r[[REG]], :upper16:(take_addr_func-([[LPC]]+8))320; ARM_RO_PC: [[LPC]]:321; ARM_RO_PC-NEXT: add     r0, pc, r[[REG:[0-9]]]322 323; NO_MOVT_ARM_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]324; NO_MOVT_ARM_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:325; NO_MOVT_ARM_RO_PC-NEXT: add     r0, pc, r[[REG]]326 327; THUMB2_RO_ABS: movw    r[[REG:[0-9]]], :lower16:take_addr_func328; THUMB2_RO_ABS: movt    r[[REG]], :upper16:take_addr_func329 330; NO_MOVT_THUMB2_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]331 332; THUMB2_RO_PC: movw    r0, :lower16:(take_addr_func-([[LPC:.LPC[0-9]+_[0-9]+]]+4))333; THUMB2_RO_PC: movt    r0, :upper16:(take_addr_func-([[LPC]]+4))334; THUMB2_RO_PC: [[LPC]]:335; THUMB2_RO_PC-NEXT: add     r0, pc336 337; NO_MOVT_THUMB2_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]338; NO_MOVT_THUMB2_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:339; NO_MOVT_THUMB2_RO_PC-NEXT: add     r[[REG]], pc340 341; THUMB1_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]342 343; THUMB1_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]344; THUMB1_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:345; THUMB1_RO_PC-NEXT: add     r[[REG]], pc346 347; CHECK: {{(bx lr|pop)}}348 349; NO_MOVT_ARM_RO_ABS: [[LCPI]]350; NO_MOVT_ARM_RO_ABS-NEXT: .long take_addr_func351 352; NO_MOVT_THUMB2_RO_ABS: [[LCPI]]353; NO_MOVT_THUMB2_RO_ABS-NEXT: .long take_addr_func354 355; THUMB1_RO_ABS: [[LCPI]]356; THUMB1_RO_ABS-NEXT: .long take_addr_func357 358; NO_MOVT_ARM_RO_PC: [[LCPI]]359; NO_MOVT_ARM_RO_PC-NEXT: .long take_addr_func-([[LPC]]+8)360 361; NO_MOVT_THUMB2_RO_PC: [[LCPI]]362; NO_MOVT_THUMB2_RO_PC-NEXT: .long take_addr_func-([[LPC]]+4)363 364; THUMB1_RO_PC: [[LCPI]]365; THUMB1_RO_PC-NEXT: .long take_addr_func-([[LPC]]+4)366}367 368define ptr @take_addr_alias()  {369entry:370  ret ptr @c1371}372; CHECK-LABEL: take_addr_alias:373; ARM_RW_SB: movw    r[[REG:[0-9]]], :lower16:c1(sbrel)374; ARM_RW_SB: movt    r[[REG]], :upper16:c1(sbrel)375; ARM_RW_SB: add     r0, r9, r[[REG]]376 377define ptr @take_addr_const_alias()  {378entry:379  ret ptr @d1380}381; CHECK-LABEL: take_addr_const_alias:382; ARM_RO_PC:      movw    [[REG:r[0-9]]], :lower16:(d1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))383; ARM_RO_PC-NEXT: movt    [[REG]], :upper16:(d1-([[LPC]]+8))384; ARM_RO_PC-NEXT: [[LPC]]:385; ARM_RO_PC-NEXT: add     r0, pc, [[REG]]386 387define weak ptr @take_addr_func_alias()  {388entry:389  ret ptr @take_addr_func_alias1390}391; CHECK-LABEL: take_addr_func_alias:392; ARM_RO_PC:      movw    [[REG:r[0-9]]], :lower16:(take_addr_func_alias1-([[LPC:.LPC[0-9]+_[0-9]+]]+8))393; ARM_RO_PC-NEXT: movt    [[REG]], :upper16:(take_addr_func_alias1-([[LPC]]+8))394; ARM_RO_PC-NEXT: [[LPC]]:395; ARM_RO_PC-NEXT: add     r0, pc, [[REG]]396 397define ptr @block_addr() {398entry:399  br label %lab1400 401lab1:402  ret ptr blockaddress(@block_addr, %lab1)403 404; CHECK-LABEL: block_addr:405 406; ARM_RO_ABS: [[LTMP:.Ltmp[0-9]+]]:407; ARM_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]408 409; ARM_RO_PC: [[LTMP:.Ltmp[0-9]+]]:410; ARM_RO_PC: ldr     r[[REG:[0-9]]], [[LCPI:.LCPI[0-9]+_[0-9]+]]411; ARM_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:412; ARM_RO_PC: add     r0, pc, r[[REG]]413 414; THUMB2_RO_ABS: [[LTMP:.Ltmp[0-9]+]]:415; THUMB2_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]416 417; THUMB2_RO_PC: [[LTMP:.Ltmp[0-9]+]]:418; THUMB2_RO_PC: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]419; THUMB2_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:420; THUMB2_RO_PC: add     r0, pc421 422; THUMB1_RO_ABS: [[LTMP:.Ltmp[0-9]+]]:423; THUMB1_RO_ABS: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]424 425; THUMB1_RO_PC: [[LTMP:.Ltmp[0-9]+]]:426; THUMB1_RO_PC: ldr     r0, [[LCPI:.LCPI[0-9]+_[0-9]+]]427; THUMB1_RO_PC: [[LPC:.LPC[0-9]+_[0-9]+]]:428; THUMB1_RO_PC: add     r0, pc429 430; CHECK: bx lr431 432; ARM_RO_ABS: [[LCPI]]433; ARM_RO_ABS-NEXT: .long   [[LTMP]]434 435; ARM_RO_PC: [[LCPI]]436; ARM_RO_PC-NEXT: .long   [[LTMP]]-([[LPC]]+8)437 438; THUMB2_RO_ABS: [[LCPI]]439; THUMB2_RO_ABS-NEXT: .long   [[LTMP]]440 441; THUMB2_RO_PC: [[LCPI]]442; THUMB2_RO_PC-NEXT: .long   [[LTMP]]-([[LPC]]+4)443 444; THUMB1_RO_ABS: [[LCPI]]445; THUMB1_RO_ABS-NEXT: .long   [[LTMP]]446 447; THUMB1_RO_PC: [[LCPI]]448; THUMB1_RO_PC-NEXT: .long   [[LTMP]]-([[LPC]]+4)449}450