Jennifer Yu
b8fee677bf
Re-check in clang support gun asm goto after fixing tests.
...
llvm-svn: 362410
2019-06-03 15:57:25 +00:00
Erich Keane
d0f34fd198
Revert "clang support gnu asm goto."
...
This reverts commit 954ec09aed
.
Reverting due to test failures as requested by Jennifer Yu.
Conflicts:
clang/test/CodeGen/asm-goto.c
llvm-svn: 362106
2019-05-30 15:38:02 +00:00
Jennifer Yu
954ec09aed
clang support gnu asm goto.
...
Syntax:
asm [volatile] goto ( AssemblerTemplate
:
: InputOperands
: Clobbers
: GotoLabels)
https://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html
New llvm IR is "callbr" for inline asm goto instead "call" for inline asm
For:
asm goto("testl %0, %0; jne %l1;" :: "r"(cond)::label_true, loop);
IR:
callbr void asm sideeffect "testl $0, $0; jne ${1:l};", "r,X,X,~{dirflag},~{fpsr},~{flags}"(i32 %0, i8* blockaddress(@foo, %label_true), i8* blockaddress(@foo, %loop)) #1
to label %asm.fallthrough [label %label_true, label %loop], !srcloc !3
asm.fallthrough:
Compiler need to generate:
1> a dummy constarint 'X' for each label.
2> an unique fallthrough label for each asm goto stmt " asm.fallthrough%number".
Diagnostic
1> duplicate asm operand name are used in output, input and label.
2> goto out of scope.
llvm-svn: 362045
2019-05-30 01:05:46 +00:00
David Majnemer
f1fdf4a80c
CodeGen: Simplify consecutive '%' modifiers
...
LLVM the consecutive '%' modifiers are redundant, skip them.
llvm-svn: 225602
2015-01-11 09:13:56 +00:00
David Majnemer
14d4e7bdbf
CodeGen: Simplify consecutive '&' modifiers
...
LLVM the consecutive '&' modifiers are redundant, skip them.
llvm-svn: 225601
2015-01-11 09:09:01 +00:00
David Majnemer
ade4bee761
CodeGen: Let arrays be inputs to inline asm
...
An array showing up in an inline assembly input is accepted in ICC and
GCC 4.8
This fixes PR20201.
Differential Revision: http://reviews.llvm.org/D4382
llvm-svn: 212954
2014-07-14 16:27:53 +00:00
Ulrich Weigand
7bcc7ec745
Handle '*' and '#' asm constraint modifiers.
...
llvm-svn: 166924
2012-10-29 12:20:54 +00:00
Chad Rosier
1426a81a74
[ms-inline asm] Use the new Inline Asm Non-Standard Dialect attribute.
...
llvm-svn: 161642
2012-08-10 00:00:34 +00:00
Eric Christopher
af6431077c
Add support for AVX registers to clang inline asm. Add a small testcase
...
and update the Sema testcase with a register that we won't hit for a while
I hope.
Fixes rdar://10510405
llvm-svn: 145671
2011-12-02 02:12:16 +00:00
Eric Christopher
5037249cc3
Clean up some oddly gratuitous vertical whitespace.
...
llvm-svn: 145670
2011-12-02 02:12:12 +00:00
Eric Christopher
86e6c07a0c
Rename function.
...
llvm-svn: 145669
2011-12-02 02:12:09 +00:00
Peter Collingbourne
05500ba6ec
Fix assertion failure in CodeGen where the input operand to an asm
...
instruction is tied to an output operand which is a pointer, and
the input operand is narrower than the output operand.
llvm-svn: 136438
2011-07-29 00:24:50 +00:00
Chris Lattner
84037d3d0a
fix PR10415, tidying up IR representation of module level inline asm
...
to avoid extraneous \n's.
llvm-svn: 135862
2011-07-23 20:04:25 +00:00
Eric Christopher
f7d303c541
Add a testcase for the previous commit and update an existing test for an
...
extra register.
Part of PR10299 and rdar://9740322
llvm-svn: 134657
2011-07-07 23:11:01 +00:00
Dale Johannesen
46742a4771
Add some missing X86-specific asm constraint letters, and fix
...
some bugs in setting allowsRegister on the ones there.
8348447.
llvm-svn: 111980
2010-08-24 22:33:12 +00:00
Chris Lattner
db6d5cb892
Implement PR6845. We allow matching constraints to have different
...
input and output types when the smaller value isn't mentioned in the
asm string. Extend this support from integers to also allowing
fp values to be mismatched (if not mentioned in the asm string).
llvm-svn: 102188
2010-04-23 17:27:29 +00:00
Chris Lattner
da081a8e1f
fix PR6780, properly handling the IR {|} escapes in inline asm strings.
...
llvm-svn: 100449
2010-04-05 18:44:00 +00:00
Chris Lattner
eaa2778f27
fix a buildbot failure, this was passing for me because the
...
'%t' file was left around on my disk. doh.
llvm-svn: 97699
2010-03-04 00:38:16 +00:00
Chris Lattner
aabec2fb84
merge asm-2.c into asm.c, remove asm-inout.c because it is
...
XFAIL and already tracked in bugzilla.
llvm-svn: 97671
2010-03-03 21:56:57 +00:00
Chris Lattner
576def7fbe
fix PR6475, we were doing side-effecting stuff in an assert.
...
llvm-svn: 97669
2010-03-03 21:52:23 +00:00
Daniel Dunbar
8fbe78f6fc
Update tests to use %clang_cc1 instead of 'clang-cc' or 'clang -cc1'.
...
- This is designed to make it obvious that %clang_cc1 is a "test variable"
which is substituted. It is '%clang_cc1' instead of '%clang -cc1' because it
can be useful to redefine what gets run as 'clang -cc1' (for example, to set
a default target).
llvm-svn: 91446
2009-12-15 20:14:24 +00:00
Daniel Dunbar
8b57697954
Eliminate &&s in tests.
...
- 'for i in $(find . -type f); do sed -e 's#\(RUN:.*[^ ]\) *&& *$#\1#g' $i | FileUpdate $i; done', for the curious.
llvm-svn: 86430
2009-11-08 01:45:36 +00:00
Chris Lattner
f315471e24
fix PR4938 by recognizing % as a modifier on outputs,
...
previously we only recognized it on inputs.
llvm-svn: 83939
2009-10-13 04:32:07 +00:00
Mike Stump
11289f4280
Remove tabs, and whitespace cleanups.
...
llvm-svn: 81346
2009-09-09 15:08:12 +00:00
Daniel Dunbar
97ea867690
MultiTestRunner: Validate '&&' at the end of RUN lines.
...
- This is just to normalize, these will go away soon hopefully.
Added all the missing '&&'s that have crept in. :)
llvm-svn: 77062
2009-07-25 11:27:37 +00:00
Daniel Dunbar
018958d94d
Update test
...
llvm-svn: 72110
2009-05-19 16:09:59 +00:00
Chris Lattner
61af27860d
look at the right operand when increasing the size of an asm output,
...
this fixes http://llvm.org/bugs/show_bug.cgi?id=3373#c20
llvm-svn: 70685
2009-05-03 09:05:53 +00:00
Chris Lattner
cc1cde9c57
allow references to the larger value in a tied constraint
...
from the asm string, but reject references to the smaller one.
llvm-svn: 70679
2009-05-03 08:32:32 +00:00
Chris Lattner
59c3a9cd54
add support for tying asm operands where the result is smaller than
...
the input. This is part of PR3373.
llvm-svn: 70677
2009-05-03 08:21:20 +00:00
Daniel Dunbar
c7121faa71
Remove typo
...
llvm-svn: 70676
2009-05-03 08:00:14 +00:00
Chris Lattner
10f221f321
implement support for asm outputs targetting non-simple lvalue destinations
...
like bitfields. incidentally llvm-gcc crashes on this sort of thing also. :)
llvm-svn: 70675
2009-05-03 07:53:25 +00:00
Chris Lattner
b65933eaa2
handle codegen of asms where a small input is tied to a large output.
...
llvm-svn: 70672
2009-05-03 07:27:51 +00:00
Anders Carlsson
16b1461c21
Ignore plus operands when looking up the operand number from a named operand. This matches llvm-gcc and fixes PR3908.
...
llvm-svn: 68371
2009-04-03 05:57:08 +00:00
Daniel Dunbar
a45cf5b6b0
Rename clang to clang-cc.
...
Tests and drivers updated, still need to shuffle dirs.
llvm-svn: 67602
2009-03-24 02:24:46 +00:00
Chris Lattner
f85a938985
Fix PR3682 by just disabling a broken assertion. This check should be
...
done in sema, and is reflected by the existing PR3258. In the meantime,
fix PR3682 by disabling a bogus assertion (which doesn't account for +
operands).
llvm-svn: 66533
2009-03-10 06:42:37 +00:00
Chris Lattner
6dd0f9263d
reduce duplication of parsing code between %0 and %x0 and
...
add support for modifiers on named references, like %c[foo].
llvm-svn: 66532
2009-03-10 06:38:02 +00:00
Chris Lattner
d7d5fdf090
move matching of named operands into AsmStmt class. At the same
...
time handle + operands in operand counting, fixing asm.c:t7 to
expand into $2 instead of $1.
llvm-svn: 66531
2009-03-10 06:33:24 +00:00
Anders Carlsson
b8482c5d5d
Match gcc and always perform array/function conversion for asm input exprs. Fixes PR3641.
...
llvm-svn: 65256
2009-02-22 02:11:23 +00:00
Anders Carlsson
570c357ded
If an input constraint refers to an output constraint, it should have the same constraint info as the output constraint. Fixes PR3417
...
llvm-svn: 63127
2009-01-27 20:38:24 +00:00
Anders Carlsson
00057e4e09
Handle multi-value inputs
...
llvm-svn: 62069
2009-01-12 02:22:13 +00:00
Anders Carlsson
431acd1129
More inline asm fixes
...
llvm-svn: 62049
2009-01-11 21:23:27 +00:00
Anders Carlsson
a948c34b0b
Handle readwrite constraints correctly
...
llvm-svn: 62043
2009-01-11 19:46:50 +00:00