1;RUN: llc -mtriple=aarch64-none-linux-gnu -mattr=+neon < %s | FileCheck %s 2@var = global i32 0 3define void @test_inline_constraint_S() { 4; CHECK-LABEL: test_inline_constraint_S: 5 call void asm sideeffect "adrp x0, $0", "S"(i32* @var) 6 call void asm sideeffect "add x0, x0, :lo12:$0", "S"(i32* @var) 7; CHECK: adrp x0, var 8; CHECK: add x0, x0, :lo12:var 9 ret void 10} 11define i32 @test_inline_constraint_S_label(i1 %in) { 12; CHECK-LABEL: test_inline_constraint_S_label: 13 call void asm sideeffect "adr x0, $0", "S"(i8* blockaddress(@test_inline_constraint_S_label, %loc)) 14; CHECK: adr x0, .Ltmp{{[0-9]+}} 15br i1 %in, label %loc, label %loc2 16loc: 17 ret i32 0 18loc2: 19 ret i32 42 20} 21define i32 @test_inline_constraint_S_label_tailmerged(i1 %in) { 22; CHECK-LABEL: test_inline_constraint_S_label_tailmerged: 23 call void asm sideeffect "adr x0, $0", "S"(i8* blockaddress(@test_inline_constraint_S_label_tailmerged, %loc)) 24; CHECK: adr x0, .Ltmp{{[0-9]+}} 25br i1 %in, label %loc, label %loc2 26loc: 27 br label %common.ret 28loc2: 29 br label %common.ret 30common.ret: 31 %common.retval = phi i32 [ 0, %loc ], [ 42, %loc2 ] 32 ret i32 %common.retval 33} 34 35define i32 @test_inline_constraint_S_label_tailmerged2(i1 %in) { 36; CHECK-LABEL: test_inline_constraint_S_label_tailmerged2: 37 call void asm sideeffect "adr x0, $0", "S"(i8* blockaddress(@test_inline_constraint_S_label_tailmerged2, %loc)) 38; CHECK: adr x0, .Ltmp{{[0-9]+}} 39 br i1 %in, label %loc, label %loc2 40common.ret: 41 %common.retval = phi i32 [ 0, %loc ], [ 42, %loc2 ] 42 ret i32 %common.retval 43loc: 44 br label %common.ret 45loc2: 46 br label %common.ret 47} 48