nickdesaulniers updated this revision to Diff 392990. nickdesaulniers added a comment.
- update Repository: rG LLVM Github Monorepo CHANGES SINCE LAST ACTION https://reviews.llvm.org/D115410/new/ https://reviews.llvm.org/D115410 Files: llvm/test/Assembler/call-arg-is-callee.ll llvm/test/Bitcode/callbr.ll llvm/test/Bitcode/callbr.ll.bc llvm/test/CodeGen/AArch64/callbr-asm-label.ll llvm/test/CodeGen/AArch64/callbr-asm-obj-file.ll llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll llvm/test/CodeGen/ARM/speculation-hardening-sls.ll llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll llvm/test/CodeGen/SystemZ/asm-20.ll llvm/test/CodeGen/X86/callbr-asm-bb-exports.ll llvm/test/CodeGen/X86/callbr-asm-blockplacement.ll llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll llvm/test/CodeGen/X86/callbr-asm-destinations.ll llvm/test/CodeGen/X86/callbr-asm-errors.ll llvm/test/CodeGen/X86/callbr-asm-instr-scheduling.ll llvm/test/CodeGen/X86/callbr-asm-kill.mir llvm/test/CodeGen/X86/callbr-asm-label-addr.ll llvm/test/CodeGen/X86/callbr-asm-obj-file.ll llvm/test/CodeGen/X86/callbr-asm-outputs-pred-succ.ll llvm/test/CodeGen/X86/callbr-asm-outputs.ll llvm/test/CodeGen/X86/callbr-asm-phi-placement.ll llvm/test/CodeGen/X86/callbr-asm-sink.ll llvm/test/CodeGen/X86/callbr-asm.ll llvm/test/CodeGen/X86/callbr-codegenprepare.ll llvm/test/CodeGen/X86/shrinkwrap-callbr.ll llvm/test/CodeGen/X86/tail-dup-asm-goto.ll llvm/test/Instrumentation/MemorySanitizer/msan_asm_conservative.ll llvm/test/Transforms/CallSiteSplitting/callsite-split-callbr.ll llvm/test/Transforms/Coroutines/coro-debug.ll llvm/test/Transforms/GVN/callbr-loadpre-critedge.ll llvm/test/Transforms/GVN/callbr-scalarpre-critedge.ll llvm/test/Transforms/GVN/critical-edge-split-failure.ll llvm/test/Transforms/IROutliner/illegal-callbr.ll llvm/test/Transforms/Inline/blockaddress.ll llvm/test/Transforms/Inline/callbr.ll llvm/test/Transforms/JumpThreading/callbr-edge-split.ll llvm/test/Transforms/JumpThreading/pr46857-callbr.ll llvm/test/Transforms/LICM/callbr-crash.ll llvm/test/Transforms/LoopDeletion/two-predecessors.ll llvm/test/Transforms/LoopRotate/callbr.ll llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting.ll llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting2.ll llvm/test/Transforms/LoopUnroll/callbr.ll llvm/test/Transforms/LoopUnswitch/callbr.ll llvm/test/Transforms/PGOProfile/callbr.ll llvm/test/Transforms/SimpleLoopUnswitch/not-safe-to-clone.ll llvm/test/Transforms/SimplifyCFG/callbr-destinations.ll llvm/test/Verifier/callbr.ll llvm/test/tools/llvm-diff/callbr.ll llvm/test/tools/llvm-diff/phinode.ll llvm/test/tools/llvm-reduce/remove-function-arguments-of-funcs-used-in-blockaddress.ll
Index: llvm/test/tools/llvm-reduce/remove-function-arguments-of-funcs-used-in-blockaddress.ll =================================================================== --- llvm/test/tools/llvm-reduce/remove-function-arguments-of-funcs-used-in-blockaddress.ll +++ llvm/test/tools/llvm-reduce/remove-function-arguments-of-funcs-used-in-blockaddress.ll @@ -13,9 +13,9 @@ bb4: ; CHECK-INTERESTINGNESS: callbr void asm ; CHECK-INTERESTINGNESS-SAME: blockaddress -; CHECK-FINAL: callbr void asm sideeffect "", "X"(i8* blockaddress(@func, %bb11)) +; CHECK-FINAL: callbr void asm sideeffect "", "i"(i8* blockaddress(@func, %bb11)) ; CHECK-ALL: to label %bb5 [label %bb11] - callbr void asm sideeffect "", "X"(i8* blockaddress(@func, %bb11)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@func, %bb11)) to label %bb5 [label %bb11] ; CHECK-ALL: bb5: Index: llvm/test/tools/llvm-diff/phinode.ll =================================================================== --- llvm/test/tools/llvm-diff/phinode.ll +++ llvm/test/tools/llvm-diff/phinode.ll @@ -9,7 +9,7 @@ ; CHECK-NEXT: < %7 = phi i32 [ 0, %2 ], [ -1, %1 ] ; CHECK-NEXT: < ret i32 %7 define i32 @foo(i32 %0) #0 { - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %6)) + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %6)) to label %2 [label %6] 2: Index: llvm/test/tools/llvm-diff/callbr.ll =================================================================== --- llvm/test/tools/llvm-diff/callbr.ll +++ llvm/test/tools/llvm-diff/callbr.ll @@ -2,7 +2,7 @@ define void @foo() { entry: - callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %return), i8* blockaddress(@foo, %t_no)) + callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %return), i8* blockaddress(@foo, %t_no)) to label %asm.fallthrough [label %return, label %t_no] asm.fallthrough: @@ -18,14 +18,14 @@ ; CHECK: in function bar: ; CHECK-NOT: in function foo: ; CHECK-NEXT: in block %entry: -; CHECK-NEXT: > callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) +; CHECK-NEXT: > callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) ; CHECK-NEXT: to label %asm.fallthrough [label %return, label %t_no] -; CHECK-NEXT: < callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) +; CHECK-NEXT: < callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) ; CHECK-NEXT: to label %asm.fallthrough [label %return, label %t_no] define void @bar() { entry: - callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) + callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %t_no), i8* blockaddress(@foo, %return)) to label %asm.fallthrough [label %return, label %t_no] asm.fallthrough: Index: llvm/test/Verifier/callbr.ll =================================================================== --- llvm/test/Verifier/callbr.ll +++ llvm/test/Verifier/callbr.ll @@ -5,7 +5,7 @@ define void @test1() { ; The %4 in the indirect label list is not found in the blockaddresses in the ; arg list (bad). - callbr void asm sideeffect "#test1", "X,X"(i8* blockaddress(@test1, %3), i8* blockaddress(@test1, %2)) + callbr void asm sideeffect "#test1", "i,i"(i8* blockaddress(@test1, %3), i8* blockaddress(@test1, %2)) to label %1 [label %4, label %2] 1: ret void @@ -20,7 +20,7 @@ ; CHECK-NOT: Indirect label missing from arglist. define void @test2() { ; %4 and %2 are both in the indirect label list and the arg list (good). - callbr void asm sideeffect "${0:l} ${1:l}", "X,X"(i8* blockaddress(@test2, %4), i8* blockaddress(@test2, %2)) + callbr void asm sideeffect "${0:l} ${1:l}", "i,i"(i8* blockaddress(@test2, %4), i8* blockaddress(@test2, %2)) to label %1 [label %4, label %2] 1: ret void @@ -38,7 +38,7 @@ ; a label as an input to the inline asm (both address of label and asm goto ; use blockaddress constants; we're testing that the indirect label list from ; the asm goto is in the arg list to the asm). - callbr void asm sideeffect "${0:l} ${1:l} ${2:l}", "X,X,X"(i8* blockaddress(@test3, %4), i8* blockaddress(@test3, %2), i8* blockaddress(@test3, %3)) + callbr void asm sideeffect "${0:l} ${1:l} ${2:l}", "i,X,i"(i8* blockaddress(@test3, %4), i8* blockaddress(@test3, %2), i8* blockaddress(@test3, %3)) to label %1 [label %3, label %4] 1: ret void @@ -55,7 +55,7 @@ ; CHECK-NEXT: #test4 define i32 @test4(i1 %var) { entry: - %ret = callbr i32 asm sideeffect "#test4", "=r,X"(i8* blockaddress(@test4, %abnormal)) to label %normal [label %abnormal] + %ret = callbr i32 asm sideeffect "#test4", "=r,i"(i8* blockaddress(@test4, %abnormal)) to label %normal [label %abnormal] normal: ret i32 0 @@ -69,7 +69,7 @@ ; CHECK-NEXT: #test5 define i32 @test5() { entry: - %ret = callbr i32 asm sideeffect "#test5", "=r,X"(i8* blockaddress(@test5, %both)) to label %both [label %both] + %ret = callbr i32 asm sideeffect "#test5", "=r,i"(i8* blockaddress(@test5, %both)) to label %both [label %both] both: ret i32 0 Index: llvm/test/Transforms/SimplifyCFG/callbr-destinations.ll =================================================================== --- llvm/test/Transforms/SimplifyCFG/callbr-destinations.ll +++ llvm/test/Transforms/SimplifyCFG/callbr-destinations.ll @@ -5,7 +5,7 @@ define void @fun0() { entry: - callbr void asm sideeffect "", "X"(i8* blockaddress(@fun0, %bb1)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@fun0, %bb1)) to label %bb2 [label %bb1] bb1: ; preds = %bb @@ -17,7 +17,7 @@ define void @fun1() { entry: - callbr void asm sideeffect "", "X"(i8* blockaddress(@fun1, %bb1)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@fun1, %bb1)) to label %bb2 [label %bb1] bb2: ; preds = %bb Index: llvm/test/Transforms/SimpleLoopUnswitch/not-safe-to-clone.ll =================================================================== --- llvm/test/Transforms/SimpleLoopUnswitch/not-safe-to-clone.ll +++ llvm/test/Transforms/SimpleLoopUnswitch/not-safe-to-clone.ll @@ -11,7 +11,7 @@ br i1 %tree, label %if.end8, label %if.else if.else: ; preds = %for.cond - callbr void asm sideeffect ".pushsection __jump_table, \22aw\22 \0A\09.popsection \0A\09", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@mem_cgroup_node_nr_lru_pages, %for.cond5)) + callbr void asm sideeffect ".pushsection __jump_table, \22aw\22 \0A\09.popsection \0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@mem_cgroup_node_nr_lru_pages, %for.cond5)) to label %if.end8 [label %for.cond5] for.cond5: ; preds = %if.else, %for.cond5 Index: llvm/test/Transforms/PGOProfile/callbr.ll =================================================================== --- llvm/test/Transforms/PGOProfile/callbr.ll +++ llvm/test/Transforms/PGOProfile/callbr.ll @@ -5,7 +5,7 @@ ; CHECK-NOT: ptrtoint void (i8*)* asm sideeffect ; CHECK: callbr void asm sideeffect %retval = alloca i32, align 4 - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@a, %b)) #1 + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@a, %b)) #1 to label %asm.fallthrough [label %b] asm.fallthrough: Index: llvm/test/Transforms/LoopUnswitch/callbr.ll =================================================================== --- llvm/test/Transforms/LoopUnswitch/callbr.ll +++ llvm/test/Transforms/LoopUnswitch/callbr.ll @@ -4,18 +4,18 @@ ; It's ok to modify this test in the future should we allow the loop containing ; callbr to be unswitched and are able to do so correctly. -; CHECK: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) +; CHECK: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) ; CHECK: to label %7 [label %10] -; CHECK: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) +; CHECK: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) ; CHECK: to label %9 [label %10] -; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) +; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) ; CHECK-NOT: to label %7 [label %10] -; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) +; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) ; CHECK-NOT: to label %9 [label %10] -; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %19)) +; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %19)) ; CHECK-NOT: to label %16 [label %19] -; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %19)) +; CHECK-NOT: callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %19)) ; CHECK-NOT: to label %18 [label %19] ; This test is essentially: @@ -43,14 +43,14 @@ br i1 %5, label %8, label %6 6: ; preds = %4 - callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) #0 + callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) #0 to label %7 [label %10] 7: ; preds = %6 br label %10 8: ; preds = %4 - callbr void asm sideeffect "# ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) #0 + callbr void asm sideeffect "# ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@foo, %10)) #0 to label %9 [label %10] 9: ; preds = %8 Index: llvm/test/Transforms/LoopUnroll/callbr.ll =================================================================== --- llvm/test/Transforms/LoopUnroll/callbr.ll +++ llvm/test/Transforms/LoopUnroll/callbr.ll @@ -32,7 +32,7 @@ br i1 %tobool, label %for.inc, label %if.then if.then: ; preds = %for.body - callbr void asm sideeffect "1: nop\0A\09.quad b, ${0:l}, $$5\0A\09", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@d, %l_yes)) + callbr void asm sideeffect "1: nop\0A\09.quad b, ${0:l}, $$5\0A\09", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@d, %l_yes)) to label %asm.fallthrough [label %l_yes] asm.fallthrough: ; preds = %if.then Index: llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting2.ll =================================================================== --- llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting2.ll +++ llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting2.ll @@ -17,9 +17,9 @@ if.then: ; preds = %entry ; It's ok to modify this test in the future should be able to split critical ; edges here, just noting that this is the critical edge that we care about. -; CHECK: callbr void asm sideeffect "", "X"(i8* blockaddress(@b, %cleanup.cont.critedge)) +; CHECK: callbr void asm sideeffect "", "i"(i8* blockaddress(@b, %cleanup.cont.critedge)) ; CHECK-NEXT: to label %return [label %cleanup.cont.critedge] - callbr void asm sideeffect "", "X"(i8* blockaddress(@b, %cleanup.cont.critedge)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@b, %cleanup.cont.critedge)) to label %return [label %cleanup.cont.critedge] cleanup.cont.critedge: ; preds = %entry, %if.then @@ -46,7 +46,7 @@ br i1 %tobool.not.i, label %if.then2, label %if.then.i if.then.i: ; preds = %if.then - callbr void asm sideeffect "", "X"(i8* blockaddress(@do_pages_move_nr_pages, %if.then2)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@do_pages_move_nr_pages, %if.then2)) to label %if.end3 [label %if.then2] if.then2: ; preds = %if.then, %if.then.i Index: llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting.ll =================================================================== --- llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting.ll +++ llvm/test/Transforms/LoopStrengthReduce/callbr-critical-edge-splitting.ll @@ -8,11 +8,11 @@ br label %for.cond for.cond: ; preds = %for.inc, %entry -; It's ok to modify this test in the future should be able to split critical +; It's ok to modify this test in the future should we be able to split critical ; edges here, just noting that this is the critical edge that we care about. -; CHECK: callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %cond.true.i), i8* blockaddress(@test1, %for.end)) +; CHECK: callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %cond.true.i), i8* blockaddress(@test1, %for.end)) ; CHECK-NEXT: to label %asm.fallthrough.i.i [label %cond.true.i, label %for.end] - callbr void asm sideeffect "", "X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %cond.true.i), i8* blockaddress(@test1, %for.end)) + callbr void asm sideeffect "", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %cond.true.i), i8* blockaddress(@test1, %for.end)) to label %asm.fallthrough.i.i [label %cond.true.i, label %for.end] asm.fallthrough.i.i: ; preds = %for.cond Index: llvm/test/Transforms/LoopRotate/callbr.ll =================================================================== --- llvm/test/Transforms/LoopRotate/callbr.ll +++ llvm/test/Transforms/LoopRotate/callbr.ll @@ -31,7 +31,7 @@ ; CHECK: .lr.ph: ; CHECK-NEXT: br label [[TMP13:%.*]] ; CHECK: [[DOT11:%.*]] = phi i32 [ undef, [[DOTLR_PH]] ], [ [[TMP14:%.*]], [[J_EXIT_I:%.*]] ] -; CHECK-NEXT: callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@o, [[M_EXIT]])) #1 +; CHECK-NEXT: callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@o, [[M_EXIT]])) #1 ; CHECK-NEXT: to label [[J_EXIT_I]] [label %m.exit] ; CHECK: j.exit.i: ; CHECK-NEXT: [[TMP14]] = tail call i32 asm "", "={ax},~{dirflag},~{fpsr},~{flags}"() #2 @@ -79,7 +79,7 @@ br i1 %13, label %m.exit, label %14 ; <label>:14: ; preds = %12 - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@o, %m.exit)) #1 + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@o, %m.exit)) #1 to label %j.exit.i [label %m.exit] j.exit.i: ; preds = %14 Index: llvm/test/Transforms/LoopDeletion/two-predecessors.ll =================================================================== --- llvm/test/Transforms/LoopDeletion/two-predecessors.ll +++ llvm/test/Transforms/LoopDeletion/two-predecessors.ll @@ -7,7 +7,7 @@ define dso_local i32 @hoge() local_unnamed_addr #0 { ; CHECK-LABEL: @hoge( ; CHECK-NEXT: bb: -; CHECK-NEXT: callbr void asm sideeffect "", "X"(i8* blockaddress(@hoge, [[BB2:%.*]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i"(i8* blockaddress(@hoge, [[BB2:%.*]])) ; CHECK-NEXT: to label [[BB1:%.*]] [label %bb2] ; CHECK: bb1: ; CHECK-NEXT: br label [[BB2]] @@ -17,7 +17,7 @@ ; CHECK-NEXT: br label [[BB2]] ; bb: - callbr void asm sideeffect "", "X"(i8* blockaddress(@hoge, %bb2)) #1 + callbr void asm sideeffect "", "i"(i8* blockaddress(@hoge, %bb2)) #1 to label %bb1 [label %bb2] bb1: ; preds = %bb Index: llvm/test/Transforms/LICM/callbr-crash.ll =================================================================== --- llvm/test/Transforms/LICM/callbr-crash.ll +++ llvm/test/Transforms/LICM/callbr-crash.ll @@ -5,7 +5,7 @@ br label %for.cond for.cond: ; preds = %cond.true.i, %entry - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@j, %for.end)) + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@j, %for.end)) to label %cond.true.i [label %for.end] cond.true.i: ; preds = %for.cond Index: llvm/test/Transforms/JumpThreading/pr46857-callbr.ll =================================================================== --- llvm/test/Transforms/JumpThreading/pr46857-callbr.ll +++ llvm/test/Transforms/JumpThreading/pr46857-callbr.ll @@ -11,7 +11,7 @@ ; CHECK-NEXT: [[I:%.*]] = icmp eq i32 [[ARG1:%.*]], 0 ; CHECK-NEXT: br label [[BB7:%.*]] ; CHECK: bb4: -; CHECK-NEXT: callbr void asm sideeffect "", "X"(i8* blockaddress(@func, [[BB7]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i"(i8* blockaddress(@func, [[BB7]])) ; CHECK-NEXT: to label [[BB5:%.*]] [label %bb7] ; CHECK: bb5: ; CHECK-NEXT: br label [[BB7]] @@ -30,7 +30,7 @@ br label %bb7 bb4: - callbr void asm sideeffect "", "X"(i8* blockaddress(@func, %bb6)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@func, %bb6)) to label %bb5 [label %bb6] bb5: Index: llvm/test/Transforms/JumpThreading/callbr-edge-split.ll =================================================================== --- llvm/test/Transforms/JumpThreading/callbr-edge-split.ll +++ llvm/test/Transforms/JumpThreading/callbr-edge-split.ll @@ -16,7 +16,7 @@ ; CHECK-NEXT: [[PHITMP:%.*]] = icmp ne i32 [[CALL]], 0 ; CHECK-NEXT: br i1 [[PHITMP]], label [[IF_THEN2:%.*]], label [[IF_END4:%.*]] ; CHECK: if.else: -; CHECK-NEXT: callbr void asm sideeffect "", "X"(i8* blockaddress(@c, [[IF_THEN2]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i"(i8* blockaddress(@c, [[IF_THEN2]])) ; CHECK-NEXT: to label [[IF_END_THREAD:%.*]] [label %if.then2] ; CHECK: if.end.thread: ; CHECK-NEXT: br label [[IF_THEN2]] @@ -37,7 +37,7 @@ br label %if.end if.else: ; preds = %entry - callbr void asm sideeffect "", "X"(i8* blockaddress(@c, %if.end)) #2 + callbr void asm sideeffect "", "i"(i8* blockaddress(@c, %if.end)) #2 to label %normal [label %if.end] normal: ; preds = %if.else Index: llvm/test/Transforms/Inline/callbr.ll =================================================================== --- llvm/test/Transforms/Inline/callbr.ll +++ llvm/test/Transforms/Inline/callbr.ll @@ -14,7 +14,7 @@ %3 = alloca i32, align 4 store i32 %0, i32* %3, align 4 %4 = load i32, i32* %3, align 4 - callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@t32, %7), i8* blockaddress(@t32, %6)) #1 + callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@t32, %7), i8* blockaddress(@t32, %6)) #1 to label %5 [label %7, label %6] ; <label>:5: ; preds = %1 @@ -39,7 +39,7 @@ ; CHECK-NOT: @t32 ; CHECK: define dso_local i32 @main -; CHECK: callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %6, i8* blockaddress(@main, %9), i8* blockaddress(@main, %8)) +; CHECK: callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %6, i8* blockaddress(@main, %9), i8* blockaddress(@main, %8)) ; CHECK: to label %7 [label %9, label %8] ; CHECK: 7: ; CHECK-NEXT: store i32 0, i32* %1, align 4 Index: llvm/test/Transforms/Inline/blockaddress.ll =================================================================== --- llvm/test/Transforms/Inline/blockaddress.ll +++ llvm/test/Transforms/Inline/blockaddress.ll @@ -59,7 +59,7 @@ %3 = alloca i32, align 4 store i32 %0, i32* %3, align 4 %4 = load i32, i32* %3, align 4 - callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@foo, %7), i8* blockaddress(@foo, %6)) #1 + callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@foo, %7), i8* blockaddress(@foo, %6)) #1 to label %5 [label %7, label %6] ; <label>:5: ; preds = %1 @@ -100,7 +100,7 @@ %3 = alloca i32, align 4 store i32 %0, i32* %3, align 4 %4 = load i32, i32* %3, align 4 - callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@baz, %7), i8* blockaddress(@baz, %6)) #1 + callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %4, i8* blockaddress(@baz, %7), i8* blockaddress(@baz, %6)) #1 to label %5 [label %7, label %6] ; <label>:5: ; preds = %1 Index: llvm/test/Transforms/IROutliner/illegal-callbr.ll =================================================================== --- llvm/test/Transforms/IROutliner/illegal-callbr.ll +++ llvm/test/Transforms/IROutliner/illegal-callbr.ll @@ -24,7 +24,7 @@ %0 = add i32 %a, 4 %1 = add i32 %b, 1 %2 = add i32 %b, 1 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@function1, %fail1)) to label %normal [label %fail1] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@function1, %fail1)) to label %normal [label %fail1] normal: %3 = add i32 %b, 1 %4 = add i32 %b, 1 @@ -54,7 +54,7 @@ %0 = add i32 %a, 4 %1 = add i32 %b, 1 %2 = add i32 %b, 1 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@function2, %fail1)) to label %normal [label %fail1] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@function2, %fail1)) to label %normal [label %fail1] normal: %3 = add i32 %b, 1 %4 = add i32 %b, 1 Index: llvm/test/Transforms/GVN/critical-edge-split-failure.ll =================================================================== --- llvm/test/Transforms/GVN/critical-edge-split-failure.ll +++ llvm/test/Transforms/GVN/critical-edge-split-failure.ll @@ -31,9 +31,9 @@ ; Splitting the critical edge from if.then to if.end will fail, but should not ; cause an infinite loop in GVN. If we can one day split edges of callbr ; indirect targets, great! -; CHECK: callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end)) +; CHECK: callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end)) ; CHECK-NEXT: to label %asm.fallthrough.i [label %if.end] - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end)) + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@l2tp_recv_dequeue, %if.end)) to label %asm.fallthrough.i [label %if.end] asm.fallthrough.i: ; preds = %if.then Index: llvm/test/Transforms/GVN/callbr-scalarpre-critedge.ll =================================================================== --- llvm/test/Transforms/GVN/callbr-scalarpre-critedge.ll +++ llvm/test/Transforms/GVN/callbr-scalarpre-critedge.ll @@ -8,7 +8,7 @@ ; CHECK-LABEL: @wombat( ; CHECK-NEXT: bb: ; CHECK-NEXT: [[TMP5:%.*]] = or i64 [[ARG2:%.*]], [[ARG:%.*]] -; CHECK-NEXT: callbr void asm sideeffect "", "X,X"(i8* blockaddress(@wombat, [[BB7:%.*]]), i8* blockaddress(@wombat, [[BB9:%.*]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i,i"(i8* blockaddress(@wombat, [[BB7:%.*]]), i8* blockaddress(@wombat, [[BB9:%.*]])) ; CHECK-NEXT: to label [[BB6:%.*]] [label [[BB7]], label %bb9] ; CHECK: bb6: ; CHECK-NEXT: br label [[BB7]] @@ -23,7 +23,7 @@ ; bb: %tmp5 = or i64 %arg2, %arg - callbr void asm sideeffect "", "X,X"(i8* blockaddress(@wombat, %bb7), i8* blockaddress(@wombat, %bb9)) + callbr void asm sideeffect "", "i,i"(i8* blockaddress(@wombat, %bb7), i8* blockaddress(@wombat, %bb9)) to label %bb6 [label %bb7, label %bb9] bb6: ; preds = %bb Index: llvm/test/Transforms/GVN/callbr-loadpre-critedge.ll =================================================================== --- llvm/test/Transforms/GVN/callbr-loadpre-critedge.ll +++ llvm/test/Transforms/GVN/callbr-loadpre-critedge.ll @@ -9,7 +9,7 @@ define void @widget(%struct.pluto** %tmp1) { ; CHECK-LABEL: @widget( ; CHECK-NEXT: bb: -; CHECK-NEXT: callbr void asm sideeffect "", "X,X"(i8* blockaddress(@widget, [[BB5:%.*]]), i8* blockaddress(@widget, [[BB8:%.*]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i,i"(i8* blockaddress(@widget, [[BB5:%.*]]), i8* blockaddress(@widget, [[BB8:%.*]])) ; CHECK-NEXT: to label [[BB4:%.*]] [label [[BB5]], label %bb8] ; CHECK: bb4: ; CHECK-NEXT: br label [[BB5]] @@ -26,7 +26,7 @@ ; CHECK-NEXT: ret void ; bb: - callbr void asm sideeffect "", "X,X"(i8* blockaddress(@widget, %bb5), i8* blockaddress(@widget, %bb8)) + callbr void asm sideeffect "", "i,i"(i8* blockaddress(@widget, %bb5), i8* blockaddress(@widget, %bb8)) to label %bb4 [label %bb5, label %bb8] bb4: ; preds = %bb Index: llvm/test/Transforms/Coroutines/coro-debug.ll =================================================================== --- llvm/test/Transforms/Coroutines/coro-debug.ll +++ llvm/test/Transforms/Coroutines/coro-debug.ll @@ -56,7 +56,7 @@ %4 = load i32, i32* %x.addr, align 4, !dbg !20 %add = add nsw i32 %4, 1, !dbg !21 store i32 %add, i32* %x.addr, align 4, !dbg !22 - %asm_res = callbr i32 asm "", "=r,r,X"(i32 %x, i8* blockaddress(@f, %indirect.dest)) + %asm_res = callbr i32 asm "", "=r,r,i"(i32 %x, i8* blockaddress(@f, %indirect.dest)) to label %coro_Cleanup [label %indirect.dest] indirect.dest: Index: llvm/test/Transforms/CallSiteSplitting/callsite-split-callbr.ll =================================================================== --- llvm/test/Transforms/CallSiteSplitting/callsite-split-callbr.ll +++ llvm/test/Transforms/CallSiteSplitting/callsite-split-callbr.ll @@ -7,7 +7,7 @@ define void @caller() { ; CHECK-LABEL: @caller( ; CHECK-NEXT: Top: -; CHECK-NEXT: callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@caller, [[TOP_SPLIT:%.*]])) +; CHECK-NEXT: callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@caller, [[TOP_SPLIT:%.*]])) ; CHECK-NEXT: to label [[NEXTCOND:%.*]] [label %Top.split] ; CHECK-LABEL: Top.split: ; CHECK-NEXT: call void @callee(i1 false) @@ -19,7 +19,7 @@ ; CHECK-NEXT: br label [[CALLSITEBB]] ; CHECK-LABEL: CallSiteBB: ; CHECK-NEXT: [[PHI:%.*]] = phi i1 [ false, [[TOP_SPLIT]] ], [ true, [[NEXTCOND_SPLIT]] ] -; CHECK-NEXT: callbr void asm sideeffect "", "r,X,~{dirflag},~{fpsr},~{flags}"(i1 [[PHI]], i8* blockaddress(@caller, [[END2:%.*]])) +; CHECK-NEXT: callbr void asm sideeffect "", "r,i,~{dirflag},~{fpsr},~{flags}"(i1 [[PHI]], i8* blockaddress(@caller, [[END2:%.*]])) ; CHECK-NEXT: to label [[END:%.*]] [label %End2] ; CHECK-LABEL: End: ; CHECK-NEXT: ret void @@ -27,7 +27,7 @@ ; CHECK-NEXT: ret void ; Top: - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@caller, %CallSiteBB)) + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@caller, %CallSiteBB)) to label %NextCond [label %CallSiteBB] NextCond: @@ -36,7 +36,7 @@ CallSiteBB: %phi = phi i1 [0, %Top],[1, %NextCond] call void @callee(i1 %phi) - callbr void asm sideeffect "", "r,X,~{dirflag},~{fpsr},~{flags}"(i1 %phi, i8* blockaddress(@caller, %End2)) + callbr void asm sideeffect "", "r,i,~{dirflag},~{fpsr},~{flags}"(i1 %phi, i8* blockaddress(@caller, %End2)) to label %End [label %End2] End: Index: llvm/test/Instrumentation/MemorySanitizer/msan_asm_conservative.ll =================================================================== --- llvm/test/Instrumentation/MemorySanitizer/msan_asm_conservative.ll +++ llvm/test/Instrumentation/MemorySanitizer/msan_asm_conservative.ll @@ -278,7 +278,7 @@ ; and the compiler doesn't crash. define dso_local i32 @asm_goto(i32 %n) sanitize_memory { entry: - callbr void asm sideeffect "cmp $0, $1; jnz ${2:l}", "r,r,X,~{dirflag},~{fpsr},~{flags}"(i32 %n, i32 1, i8* blockaddress(@asm_goto, %skip_label)) + callbr void asm sideeffect "cmp $0, $1; jnz ${2:l}", "r,r,i,~{dirflag},~{fpsr},~{flags}"(i32 %n, i32 1, i8* blockaddress(@asm_goto, %skip_label)) to label %cleanup [label %skip_label] skip_label: ; preds = %entry Index: llvm/test/CodeGen/X86/tail-dup-asm-goto.ll =================================================================== --- llvm/test/CodeGen/X86/tail-dup-asm-goto.ll +++ llvm/test/CodeGen/X86/tail-dup-asm-goto.ll @@ -50,7 +50,7 @@ bb110: ; preds = %bb106, %bb100 %i10.1 = phi i8* [ %arg2, %bb106 ], [ %i28.i, %bb100 ] - callbr void asm sideeffect "#$0 $1 $2", "i,i,X,~{dirflag},~{fpsr},~{flags}"(i32 42, i1 false, i8* blockaddress(@test1, %bb17.i.i.i)) + callbr void asm sideeffect "#$0 $1 $2", "i,i,i,~{dirflag},~{fpsr},~{flags}"(i32 42, i1 false, i8* blockaddress(@test1, %bb17.i.i.i)) to label %kmem_cache_has_cpu_partial.exit [label %bb17.i.i.i] bb17.i.i.i: ; preds = %bb110 Index: llvm/test/CodeGen/X86/shrinkwrap-callbr.ll =================================================================== --- llvm/test/CodeGen/X86/shrinkwrap-callbr.ll +++ llvm/test/CodeGen/X86/shrinkwrap-callbr.ll @@ -48,7 +48,7 @@ if.end: %call = tail call i32 @fn() - callbr void asm sideeffect "# jump to $0", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %two)) + callbr void asm sideeffect "# jump to $0", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %two)) to label %return [label %two] two: Index: llvm/test/CodeGen/X86/callbr-codegenprepare.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-codegenprepare.ll +++ llvm/test/CodeGen/X86/callbr-codegenprepare.ll @@ -12,7 +12,7 @@ define dso_local i32 @futex_lock_pi_atomic() local_unnamed_addr { entry: - %0 = callbr i32 asm "", "=r,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@futex_lock_pi_atomic, %b.exit)) + %0 = callbr i32 asm "", "=r,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@futex_lock_pi_atomic, %b.exit)) to label %asm.fallthrough.i [label %b.exit] asm.fallthrough.i: Index: llvm/test/CodeGen/X86/callbr-asm.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm.ll +++ llvm/test/CodeGen/X86/callbr-asm.ll @@ -23,7 +23,7 @@ ; CHECK-NEXT: retl entry: %0 = add i32 %a, 4 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test1, %fail)) to label %normal [label %fail] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test1, %fail)) to label %normal [label %fail] normal: ret i32 0 @@ -53,7 +53,7 @@ ; CHECK-NEXT: retl entry: %0 = add i32 %a, 4 - callbr void asm inteldialect "xor $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test1b, %fail)) to label %normal [label %fail] + callbr void asm inteldialect "xor $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test1b, %fail)) to label %normal [label %fail] normal: ret i32 0 @@ -74,7 +74,7 @@ unreachableasm: %0 = add i32 %a, 4 - callbr void asm sideeffect "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test2, %fail)) to label %normal [label %fail] + callbr void asm sideeffect "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test2, %fail)) to label %normal [label %fail] normal: ret i32 0 @@ -148,11 +148,11 @@ br label %label04 label04: ; preds = %normal0, %label03 - callbr void asm sideeffect "jmp ${0:l}; jmp ${1:l}; jmp ${2:l}", "X,X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test3, %label01), i8* blockaddress(@test3, %label02), i8* blockaddress(@test3, %label03)) + callbr void asm sideeffect "jmp ${0:l}; jmp ${1:l}; jmp ${2:l}", "i,i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test3, %label01), i8* blockaddress(@test3, %label02), i8* blockaddress(@test3, %label03)) to label %normal0 [label %label01, label %label02, label %label03] normal0: ; preds = %label04 - callbr void asm sideeffect "jmp ${0:l}; jmp ${1:l}; jmp ${2:l}; jmp ${3:l}", "X,X,X,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test3, %label01), i8* blockaddress(@test3, %label02), i8* blockaddress(@test3, %label03), i8* blockaddress(@test3, %label04)) + callbr void asm sideeffect "jmp ${0:l}; jmp ${1:l}; jmp ${2:l}; jmp ${3:l}", "i,i,i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test3, %label01), i8* blockaddress(@test3, %label02), i8* blockaddress(@test3, %label03), i8* blockaddress(@test3, %label04)) to label %normal1 [label %label01, label %label02, label %label03, label %label04] normal1: ; preds = %normal0 @@ -175,11 +175,11 @@ ; CHECK-NEXT: .LBB4_3: # %quux ; CHECK-NEXT: retl entry: - callbr void asm sideeffect "ja $0", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test4, %quux)) + callbr void asm sideeffect "ja $0", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test4, %quux)) to label %asm.fallthrough [label %quux] asm.fallthrough: ; preds = %entry - callbr void asm sideeffect "ja ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test4, %quux)) + callbr void asm sideeffect "ja ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test4, %quux)) to label %cleanup [label %quux] quux: ; preds = %asm.fallthrough, %entry Index: llvm/test/CodeGen/X86/callbr-asm-sink.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-sink.ll +++ llvm/test/CodeGen/X86/callbr-asm-sink.ll @@ -21,7 +21,7 @@ ; CHECK-NEXT: movq $0, -8(%rax) ; CHECK-NEXT: retq %2 = getelementptr inbounds %struct1, %struct1* %0, i64 0, i32 1 - callbr void asm sideeffect "# $0 $1", "*m,X,~{memory},~{dirflag},~{fpsr},~{flags}"(i32* %2, i8* blockaddress(@klist_dec_and_del, %3)) + callbr void asm sideeffect "# $0 $1", "*m,i,~{memory},~{dirflag},~{fpsr},~{flags}"(i32* %2, i8* blockaddress(@klist_dec_and_del, %3)) to label %6 [label %3] 3: Index: llvm/test/CodeGen/X86/callbr-asm-phi-placement.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-phi-placement.ll +++ llvm/test/CodeGen/X86/callbr-asm-phi-placement.ll @@ -36,7 +36,7 @@ %a = phi i8* [ %arg, %entry ], [ %b, %loop ] %b = load i8*, i8** %mem, align 8 call void @foo(i8* %a) - callbr void asm sideeffect "", "*m,X"(i8* %b, i8* blockaddress(@test1, %loop)) + callbr void asm sideeffect "", "*m,i"(i8* %b, i8* blockaddress(@test1, %loop)) to label %end [label %loop] end: Index: llvm/test/CodeGen/X86/callbr-asm-outputs.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-outputs.ll +++ llvm/test/CodeGen/X86/callbr-asm-outputs.ll @@ -20,7 +20,7 @@ ; CHECK-NEXT: retl entry: %add = add nsw i32 %x, 4 - %ret = callbr i32 asm "xorl $1, $0; jmp ${2:l}", "=r,r,X,~{dirflag},~{fpsr},~{flags}"(i32 %add, i8* blockaddress(@test1, %abnormal)) + %ret = callbr i32 asm "xorl $1, $0; jmp ${2:l}", "=r,r,i,~{dirflag},~{fpsr},~{flags}"(i32 %add, i8* blockaddress(@test1, %abnormal)) to label %normal [label %abnormal] normal: @@ -77,11 +77,11 @@ br i1 %cmp, label %if.then, label %if.else if.then: ; preds = %entry - %0 = callbr { i32, i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}", "={si},={di},r,X,X,0,1,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i8* blockaddress(@test2, %label_true), i8* blockaddress(@test2, %return), i32 %out1, i32 %out2) + %0 = callbr { i32, i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}", "={si},={di},r,i,i,0,1,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i8* blockaddress(@test2, %label_true), i8* blockaddress(@test2, %return), i32 %out1, i32 %out2) to label %if.end [label %label_true, label %return] if.else: ; preds = %entry - %1 = callbr { i32, i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}", "={si},={di},r,r,X,X,0,1,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i32 %out2, i8* blockaddress(@test2, %label_true), i8* blockaddress(@test2, %return), i32 %out1, i32 %out2) + %1 = callbr { i32, i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}", "={si},={di},r,r,i,i,0,1,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i32 %out2, i8* blockaddress(@test2, %label_true), i8* blockaddress(@test2, %return), i32 %out1, i32 %out2) to label %if.end [label %label_true, label %return] if.end: ; preds = %if.else, %if.then @@ -140,10 +140,10 @@ br i1 %cmp, label %true, label %false true: - %0 = callbr { i32, i32 } asm sideeffect ".word $0, $1", "={si},={di},X" (i8* blockaddress(@test3, %indirect)) to label %asm.fallthrough [label %indirect] + %0 = callbr { i32, i32 } asm sideeffect ".word $0, $1", "={si},={di},i" (i8* blockaddress(@test3, %indirect)) to label %asm.fallthrough [label %indirect] false: - %1 = callbr { i32, i32 } asm sideeffect ".word $0, $1", "={ax},={dx},X" (i8* blockaddress(@test3, %indirect)) to label %asm.fallthrough [label %indirect] + %1 = callbr { i32, i32 } asm sideeffect ".word $0, $1", "={ax},={dx},i" (i8* blockaddress(@test3, %indirect)) to label %asm.fallthrough [label %indirect] asm.fallthrough: %vals = phi { i32, i32 } [ %0, %true ], [ %1, %false ] @@ -182,13 +182,13 @@ ; CHECK-NEXT: .LBB3_4: # %return ; CHECK-NEXT: retl entry: - %0 = callbr { i32, i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}", "=r,=r,r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i8* blockaddress(@test4, %label_true), i8* blockaddress(@test4, %return)) + %0 = callbr { i32, i32 } asm sideeffect "testl $0, $0; testl $1, $2; jne ${3:l}", "=r,=r,r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %out1, i8* blockaddress(@test4, %label_true), i8* blockaddress(@test4, %return)) to label %asm.fallthrough [label %label_true, label %return] asm.fallthrough: ; preds = %entry %asmresult = extractvalue { i32, i32 } %0, 0 %asmresult1 = extractvalue { i32, i32 } %0, 1 - %1 = callbr { i32, i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}", "=r,=r,r,r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %asmresult, i32 %asmresult1, i8* blockaddress(@test4, %label_true), i8* blockaddress(@test4, %return)) + %1 = callbr { i32, i32 } asm sideeffect "testl $0, $1; testl $2, $3; jne ${5:l}", "=r,=r,r,r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %asmresult, i32 %asmresult1, i8* blockaddress(@test4, %label_true), i8* blockaddress(@test4, %return)) to label %asm.fallthrough2 [label %label_true, label %return] asm.fallthrough2: ; preds = %asm.fallthrough Index: llvm/test/CodeGen/X86/callbr-asm-outputs-pred-succ.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-outputs-pred-succ.ll +++ llvm/test/CodeGen/X86/callbr-asm-outputs-pred-succ.ll @@ -32,12 +32,12 @@ ; Function Attrs: nounwind uwtable define dso_local i32 @main(i32 %0, i8** nocapture readnone %1) #0 { - %3 = callbr i32 asm "jmp ${1:l}", "=r,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@main, %11)) #3 + %3 = callbr i32 asm "jmp ${1:l}", "=r,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@main, %11)) #3 to label %4 [label %11] 4: ; preds = %2 %5 = tail call i32 (i8*, ...) @printf(i8* nonnull dereferenceable(1) getelementptr inbounds ([26 x i8], [26 x i8]* @.str, i64 0, i64 0), i32 %3) - %6 = callbr i32 asm "jmp ${1:l}", "=r,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@main, %7)) #3 + %6 = callbr i32 asm "jmp ${1:l}", "=r,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@main, %7)) #3 to label %9 [label %7] 7: ; preds = %4 Index: llvm/test/CodeGen/X86/callbr-asm-obj-file.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-obj-file.ll +++ llvm/test/CodeGen/X86/callbr-asm-obj-file.ll @@ -8,7 +8,7 @@ define void @test1() { entry: - callbr void asm sideeffect "je ${0:l}", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %a.b.normal.jump)) + callbr void asm sideeffect "je ${0:l}", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %a.b.normal.jump)) to label %asm.fallthrough [label %a.b.normal.jump] asm.fallthrough: Index: llvm/test/CodeGen/X86/callbr-asm-label-addr.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-label-addr.ll +++ llvm/test/CodeGen/X86/callbr-asm-label-addr.ll @@ -10,7 +10,7 @@ ; CHECK-NEXT: .Ltmp0: ; CHECK-NEXT: # %bb.2: # %baz entry: - callbr void asm sideeffect ".quad ${0:l}\0A\09.quad ${1:l}", "i,X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %baz), i8* blockaddress(@test1, %bar)) + callbr void asm sideeffect ".quad ${0:l}\0A\09.quad ${1:l}", "i,i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@test1, %baz), i8* blockaddress(@test1, %bar)) to label %asm.fallthrough [label %bar] asm.fallthrough: Index: llvm/test/CodeGen/X86/callbr-asm-kill.mir =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-kill.mir +++ llvm/test/CodeGen/X86/callbr-asm-kill.mir @@ -21,7 +21,7 @@ %a = phi i8* [ %arg, %entry ], [ %b, %loop ] %b = load i8*, i8** %mem, align 8 call void @foo(i8* %a) - callbr void asm sideeffect "", "*m,X"(i8* %b, i8* blockaddress(@test1, %loop)) + callbr void asm sideeffect "", "*m,i"(i8* %b, i8* blockaddress(@test1, %loop)) to label %end [label %loop] end: ; preds = %loop Index: llvm/test/CodeGen/X86/callbr-asm-instr-scheduling.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-instr-scheduling.ll +++ llvm/test/CodeGen/X86/callbr-asm-instr-scheduling.ll @@ -49,7 +49,7 @@ %shr = lshr i64 %addr, %sh_prom %and = and i64 %shr, 511 %arrayidx = getelementptr %struct.pgd_t, %struct.pgd_t* %2, i64 %and - callbr void asm sideeffect "1: jmp 6f\0A2:\0A.skip -(((5f-4f) - (2b-1b)) > 0) * ((5f-4f) - (2b-1b)),0x90\0A3:\0A.section .altinstructions,\22a\22\0A .long 1b - .\0A .long 4f - .\0A .word ${1:P}\0A .byte 3b - 1b\0A .byte 5f - 4f\0A .byte 3b - 2b\0A.previous\0A.section .altinstr_replacement,\22ax\22\0A4: jmp ${5:l}\0A5:\0A.previous\0A.section .altinstructions,\22a\22\0A .long 1b - .\0A .long 0\0A .word ${0:P}\0A .byte 3b - 1b\0A .byte 0\0A .byte 0\0A.previous\0A.section .altinstr_aux,\22ax\22\0A6:\0A testb $2,$3\0A jnz ${4:l}\0A jmp ${5:l}\0A.previous\0A", "i,i,i,*m,X,X,~{dirflag},~{fpsr},~{flags}"(i16 528, i32 117, i32 1, i8* getelementptr inbounds (%struct.cpuinfo_x86, %struct.cpuinfo_x86* @boot_cpu_data, i64 0, i32 12, i32 1, i64 58), i8* blockaddress(@early_ioremap_pmd, %if.end.i), i8* blockaddress(@early_ioremap_pmd, %if.then.i)) + callbr void asm sideeffect "1: jmp 6f\0A2:\0A.skip -(((5f-4f) - (2b-1b)) > 0) * ((5f-4f) - (2b-1b)),0x90\0A3:\0A.section .altinstructions,\22a\22\0A .long 1b - .\0A .long 4f - .\0A .word ${1:P}\0A .byte 3b - 1b\0A .byte 5f - 4f\0A .byte 3b - 2b\0A.previous\0A.section .altinstr_replacement,\22ax\22\0A4: jmp ${5:l}\0A5:\0A.previous\0A.section .altinstructions,\22a\22\0A .long 1b - .\0A .long 0\0A .word ${0:P}\0A .byte 3b - 1b\0A .byte 0\0A .byte 0\0A.previous\0A.section .altinstr_aux,\22ax\22\0A6:\0A testb $2,$3\0A jnz ${4:l}\0A jmp ${5:l}\0A.previous\0A", "i,i,i,*m,i,i,~{dirflag},~{fpsr},~{flags}"(i16 528, i32 117, i32 1, i8* getelementptr inbounds (%struct.cpuinfo_x86, %struct.cpuinfo_x86* @boot_cpu_data, i64 0, i32 12, i32 1, i64 58), i8* blockaddress(@early_ioremap_pmd, %if.end.i), i8* blockaddress(@early_ioremap_pmd, %if.then.i)) to label %_static_cpu_has.exit.thread.i [label %if.end.i, label %if.then.i] _static_cpu_has.exit.thread.i: ; preds = %entry Index: llvm/test/CodeGen/X86/callbr-asm-errors.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-errors.ll +++ llvm/test/CodeGen/X86/callbr-asm-errors.ll @@ -8,7 +8,7 @@ define i32 @test(i32 %a) { entry: %0 = add i32 %a, 4 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail), i8* blockaddress(@test, %fail)) to label %normal [label %fail, label %fail] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail), i8* blockaddress(@test, %fail)) to label %normal [label %fail, label %fail] normal: ret i32 %0 Index: llvm/test/CodeGen/X86/callbr-asm-destinations.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-destinations.ll +++ llvm/test/CodeGen/X86/callbr-asm-destinations.ll @@ -8,7 +8,7 @@ define i32 @test(i32 %a) { entry: %0 = add i32 %a, 4 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail)) to label %fail [label %fail] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail)) to label %fail [label %fail] fail: ret i32 1 Index: llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll +++ llvm/test/CodeGen/X86/callbr-asm-branch-folding.ll @@ -118,7 +118,7 @@ br i1 %tobool13, label %if.else, label %if.then14 if.then14: ; preds = %if.end12 - callbr void asm sideeffect "", "X,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@n, %if.then20.critedge)) + callbr void asm sideeffect "", "i,~{dirflag},~{fpsr},~{flags}"(i8* blockaddress(@n, %if.then20.critedge)) to label %cleanup [label %if.then20.critedge] if.then20.critedge: ; preds = %if.then14 Index: llvm/test/CodeGen/X86/callbr-asm-blockplacement.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-blockplacement.ll +++ llvm/test/CodeGen/X86/callbr-asm-blockplacement.ll @@ -85,7 +85,7 @@ bb15: ; preds = %bb8 %tmp16 = getelementptr [0 x %struct.wibble], [0 x %struct.wibble]* @global, i64 0, i64 %tmp4, i32 2 store i8* %tmp9, i8** %tmp16 - callbr void asm sideeffect "", "X"(i8* blockaddress(@foo, %bb18)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@foo, %bb18)) to label %bb17 [label %bb18] bb17: ; preds = %bb15 Index: llvm/test/CodeGen/X86/callbr-asm-bb-exports.ll =================================================================== --- llvm/test/CodeGen/X86/callbr-asm-bb-exports.ll +++ llvm/test/CodeGen/X86/callbr-asm-bb-exports.ll @@ -23,7 +23,7 @@ %0 = add i32 %a, 4 %1 = add i32 %b, 1 %2 = add i32 %c, 1 - callbr void asm "xorl $0, $0; jmp ${1:l}", "r,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail)) to label %normal [label %fail] + callbr void asm "xorl $0, $0; jmp ${1:l}", "r,i,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@test, %fail)) to label %normal [label %fail] normal: ret i32 %1 Index: llvm/test/CodeGen/SystemZ/asm-20.ll =================================================================== --- llvm/test/CodeGen/SystemZ/asm-20.ll +++ llvm/test/CodeGen/SystemZ/asm-20.ll @@ -4,7 +4,7 @@ define i32 @c() { entry: - callbr void asm sideeffect "j d", "X"(i8* blockaddress(@c, %d)) + callbr void asm sideeffect "j d", "i"(i8* blockaddress(@c, %d)) to label %asm.fallthrough [label %d] asm.fallthrough: ; preds = %entry Index: llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll =================================================================== --- llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll +++ llvm/test/CodeGen/PowerPC/ppc64-inlineasm-clobber.ll @@ -113,7 +113,7 @@ ; PPC64BE-NEXT: extsw r3, r3 ; PPC64BE-NEXT: blr entry: - callbr void asm sideeffect "nop", "X,~{lr}"(i8* blockaddress(@ClobberLR_BR, %return_early)) + callbr void asm sideeffect "nop", "i,~{lr}"(i8* blockaddress(@ClobberLR_BR, %return_early)) to label %return [label %return_early] return_early: @@ -153,7 +153,7 @@ ; PPC64BE-NEXT: extsw r3, r3 ; PPC64BE-NEXT: blr entry: - callbr void asm sideeffect "nop", "X,~{r5}"(i8* blockaddress(@ClobberR5_BR, %return_early)) + callbr void asm sideeffect "nop", "i,~{r5}"(i8* blockaddress(@ClobberR5_BR, %return_early)) to label %return [label %return_early] return_early: Index: llvm/test/CodeGen/ARM/speculation-hardening-sls.ll =================================================================== --- llvm/test/CodeGen/ARM/speculation-hardening-sls.ll +++ llvm/test/CodeGen/ARM/speculation-hardening-sls.ll @@ -89,7 +89,7 @@ define i32 @asmgoto() { entry: ; CHECK-LABEL: asmgoto: - callbr void asm sideeffect "B $0", "X"(i8* blockaddress(@asmgoto, %d)) + callbr void asm sideeffect "B $0", "i"(i8* blockaddress(@asmgoto, %d)) to label %asm.fallthrough [label %d] ; The asm goto above produces a direct branch: ; CHECK: @APP Index: llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll =================================================================== --- llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll +++ llvm/test/CodeGen/AArch64/speculation-hardening-sls.ll @@ -89,7 +89,7 @@ define i32 @asmgoto() { entry: ; CHECK-LABEL: asmgoto: - callbr void asm sideeffect "B $0", "X"(i8* blockaddress(@asmgoto, %d)) + callbr void asm sideeffect "B $0", "i"(i8* blockaddress(@asmgoto, %d)) to label %asm.fallthrough [label %d] ; The asm goto above produces a direct branch: ; CHECK: //APP Index: llvm/test/CodeGen/AArch64/callbr-asm-obj-file.ll =================================================================== --- llvm/test/CodeGen/AArch64/callbr-asm-obj-file.ll +++ llvm/test/CodeGen/AArch64/callbr-asm-obj-file.ll @@ -20,7 +20,7 @@ br i1 %2, label %3, label %5 3: ; preds = %0 - callbr void asm sideeffect "1: nop\0A\09.quad a\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,X"(i32* null, i8* blockaddress(@test1, %7)) + callbr void asm sideeffect "1: nop\0A\09.quad a\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,i"(i32* null, i8* blockaddress(@test1, %7)) to label %4 [label %7] 4: ; preds = %3 @@ -55,7 +55,7 @@ br i1 %5, label %6, label %7 6: ; preds = %3 - callbr void asm sideeffect "1: nop\0A\09.quad b\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,X"(i32* null, i8* blockaddress(@test2, %7)) + callbr void asm sideeffect "1: nop\0A\09.quad b\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,i"(i32* null, i8* blockaddress(@test2, %7)) to label %10 [label %7] 7: ; preds = %3 @@ -83,7 +83,7 @@ br i1 %2, label %3, label %5 3: ; preds = %0 - callbr void asm sideeffect "1: nop\0A\09.quad c\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,X"(i32* null, i8* blockaddress(@test3, %8)) + callbr void asm sideeffect "1: nop\0A\09.quad c\0A\09b ${1:l}\0A\09.quad ${0:c}", "i,i"(i32* null, i8* blockaddress(@test3, %8)) to label %4 [label %8] 4: ; preds = %3 Index: llvm/test/CodeGen/AArch64/callbr-asm-label.ll =================================================================== --- llvm/test/CodeGen/AArch64/callbr-asm-label.ll +++ llvm/test/CodeGen/AArch64/callbr-asm-label.ll @@ -10,7 +10,7 @@ ; CHECK: .Ltmp0: ; CHECK: .LBB0_2: // %indirect entry: - callbr void asm sideeffect "1:\0A\09.word b, ${0:l}\0A\09", "X"(i8* blockaddress(@test1, %indirect)) + callbr void asm sideeffect "1:\0A\09.word b, ${0:l}\0A\09", "i"(i8* blockaddress(@test1, %indirect)) to label %cleanup [label %indirect] indirect: @@ -34,7 +34,7 @@ ; CHECK-NEXT: .word .Ltmp2 ; CHECK: .Ltmp2: ; CHECK-NEXT: .LBB1_3: // %if.end6 - callbr void asm sideeffect "1:\0A\09.word b, ${0:l}\0A\09", "X"(i8* blockaddress(@test2, %if.end6)) + callbr void asm sideeffect "1:\0A\09.word b, ${0:l}\0A\09", "i"(i8* blockaddress(@test2, %if.end6)) to label %if.then4 [label %if.end6] if.then4: @@ -50,7 +50,7 @@ if.then9: ; CHECK: .Ltmp4: ; CHECK-NEXT: .LBB1_5: // %l_yes - callbr void asm sideeffect "", "X"(i8* blockaddress(@test2, %l_yes)) + callbr void asm sideeffect "", "i"(i8* blockaddress(@test2, %l_yes)) to label %if.end10 [label %l_yes] if.end10: Index: llvm/test/Bitcode/callbr.ll =================================================================== --- llvm/test/Bitcode/callbr.ll +++ llvm/test/Bitcode/callbr.ll @@ -4,9 +4,9 @@ define i32 @test_asm_goto(i32 %x){ entry: -; CHECK: callbr void asm "", "r,X"(i32 %x, i8* blockaddress(@test_asm_goto, %fail)) +; CHECK: callbr void asm "", "r,i"(i32 %x, i8* blockaddress(@test_asm_goto, %fail)) ; CHECK-NEXT: to label %normal [label %fail] - callbr void asm "", "r,X"(i32 %x, i8* blockaddress(@test_asm_goto, %fail)) to label %normal [label %fail] + callbr void asm "", "r,i"(i32 %x, i8* blockaddress(@test_asm_goto, %fail)) to label %normal [label %fail] normal: ret i32 1 fail: Index: llvm/test/Assembler/call-arg-is-callee.ll =================================================================== --- llvm/test/Assembler/call-arg-is-callee.ll +++ llvm/test/Assembler/call-arg-is-callee.ll @@ -26,7 +26,7 @@ ; verifier prevents duplicating callbr destinations. define void @callbr() { entry: - callbr i32 asm "", "=r,r,X,X"(i32 0, + callbr i32 asm "", "=r,r,i,i"(i32 0, i8 *blockaddress(@callbr, %two), i8 *blockaddress(@callbr, %three)) to label %one [label %two, label %three]
_______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits