47 lines · c
1static void inline_assembly_template_regardless_of_target_machine() {2 int tmp;3 asm volatile (4 "nop\n"5 "a_value %w[v]\n"6 "o_value %w[o]"7 : [v] "=&r" (tmp)8 : [o] "r" (tmp)9 : "cc", "memory"10 );11}12 13// RUN: c-index-test -test-inline-assembly %s 2>&1 | FileCheck %s14// CHECK: ===ASM TEMPLATE===15// CHECK: nop16// CHECK: a_value ${0:w}17// CHECK: o_value ${1:w}18// CHECK: ===ASM TEMPLATE END===19// CHECK: volatile: true20// CHECK: Output #0 Constraint (=&r): DeclRefExpr=tmp:2:921// CHECK: Input #0 Constraint (r): UnexposedExpr=tmp:2:922// CHECK: Clobber #0: cc23// CHECK: Clobber #1: memory24// CHECK: ===ASM END===25 26static void inline_assembly_valid_x86_example() {27 int tmp;28 asm (29 "nop\n"30 "mov %w[o], %w[v]"31 : [v] "=&r" (tmp)32 : [o] "r" (tmp)33 : "cc", "memory"34 );35}36 37// CHECK: ===ASM TEMPLATE===38// CHECK: nop39// CHECK: mov ${1:w}, ${0:w}40// CHECK: ===ASM TEMPLATE END===41// CHECK: volatile: false42// CHECK: Output #0 Constraint (=&r): DeclRefExpr=tmp:27:943// CHECK: Input #0 Constraint (r): UnexposedExpr=tmp:27:944// CHECK: Clobber #0: cc45// CHECK: Clobber #1: memory46// CHECK: ===ASM END===47