diff options
| author | Pete Cooper <peter_cooper@apple.com> | 2014-08-07 05:47:07 +0000 |
|---|---|---|
| committer | Pete Cooper <peter_cooper@apple.com> | 2014-08-07 05:47:07 +0000 |
| commit | 0bf1ea72ee99857724956e45ec36bebdc7ed7828 (patch) | |
| tree | 03f1916ea8ac98ac40c367b8c2f6a131e08c6924 /llvm/test/TableGen | |
| parent | 2cfdfe5882b53acf548b6aad8f7f16e6dc5b322b (diff) | |
| download | bcm5719-llvm-0bf1ea72ee99857724956e45ec36bebdc7ed7828.tar.gz bcm5719-llvm-0bf1ea72ee99857724956e45ec36bebdc7ed7828.zip | |
Change the { } expression in tablegen to accept sized binary literals which are not just 0 and 1.
It also allows nested { } expressions, as now that they are sized, we can merge pull bits from the nested value.
In the current behaviour, everything in { } must have been convertible to a single bit.
However, now that binary literals are sized, its useful to be able to initialize a range of bits.
So, for example, its now possible to do
bits<8> x = { 0, 1, { 0b1001 }, 0, 0b0 }
llvm-svn: 215086
Diffstat (limited to 'llvm/test/TableGen')
| -rw-r--r-- | llvm/test/TableGen/BitsInit.td | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/llvm/test/TableGen/BitsInit.td b/llvm/test/TableGen/BitsInit.td index c3d5113ebdb..81cf77baa45 100644 --- a/llvm/test/TableGen/BitsInit.td +++ b/llvm/test/TableGen/BitsInit.td @@ -40,6 +40,21 @@ def { bits<8> E; let E{7-0} = {0,0,1,?,?,?,?,?}; let E{3-0} = 0b0010; + + bits<8> F1 = { 0, 1, 0b1001, 0, 0b0 }; // ok + bits<7> F2 = { 0, 1, 0b1001, 0, 0b0 }; // LHS doesn't have enough bits + bits<9> F3 = { 0, 1, 0b1001, 0, 0b0 }; // RHS doesn't have enough bits + + bits<8> G1 = { 0, { 1, 0b1001, 0 }, 0b0 }; // ok + bits<8> G2 = { 0, { 1, 0b1001 }, 0, 0b0 }; // ok + bits<8> G3 = { 0, 1, { 0b1001 }, 0, 0b0 }; // ok + + bits<16> H; + let H{15-0} = { { 0b11001100 }, 0b00110011 }; + + // Make sure we can initialise ints with bits<> values. + int J = H; + int K = { 0, 1 }; } // CHECK: def {{.*}} { @@ -56,4 +71,13 @@ def { // CHECK: bits<1> D7 = { ? }; // CHECK: bits<2> D8; // CHECK: bits<8> E = { 0, 0, 1, ?, 0, 0, 1, 0 }; +// CHECK: bits<8> F1 = { 0, 1, 1, 0, 0, 1, 0, 0 }; +// CHECK: bits<7> F2; +// CHECK: bits<9> F3; +// CHECK: bits<8> G1 = { 0, 1, 1, 0, 0, 1, 0, 0 }; +// CHECK: bits<8> G2 = { 0, 1, 1, 0, 0, 1, 0, 0 }; +// CHECK: bits<8> G3 = { 0, 1, 1, 0, 0, 1, 0, 0 }; +// CHECK: bits<16> H = { 1, 1, 0, 0, 1, 1, 0, 0, 0, 0, 1, 1, 0, 0, 1, 1 }; +// CHECK: int J = 52275; +// CHECK: int K = 1; // CHECK: } |

