Page MenuHomePhabricator

[inline asm] "=i" output constraint support - gcc compatiblity

Authored by zizhar on Mar 27 2017, 1:14 AM.



In gcc, "i" is being ignored as an output constraint - when there's another char besides '+'\'=' and 'i', gcc ignores 'i' completely (just in output constraint).
In order to be gcc compatible, we need to ignore it as well.
The following patch ignores the 'i' and making sure things as "=i" are still not allowed.

('i' makes no sense as an output constraint but gcc allows it and ignores it.)

Diff Detail


Event Timeline

zizhar created this revision.Mar 27 2017, 1:14 AM
ahatanak added inline comments.
506 ↗(On Diff #90145)

If we are going to ignore 'i', should we ignore other constraints for immediate operands too (for example, 'n', 'E", and 'F')?

zizhar added inline comments.May 3 2017, 4:19 AM
506 ↗(On Diff #90145)

I agree, we should.
I will add these cases aswell :)

zizhar updated this revision to Diff 97602.May 3 2017, 4:39 AM
rnk accepted this revision.May 12 2017, 3:41 PM


This revision is now accepted and ready to land.May 12 2017, 3:41 PM
This revision was automatically updated to reflect the committed changes.

I am getting errors with clang-tidy, is this the right place to ask for those additional constraints?

CUDA allows a few more output constraints -->

1.1.2. Constraints
There is a separate constraint letter for each PTX register type:

"h" = .u16 reg
"r" = .u32 reg
"l" = .u64 reg
"f" = .f32 reg
"d" = .f64 reg