Skip to content

Commit 995cc68

Browse files
committed
Also add implied featureset for other ISA extensions
1 parent 492495d commit 995cc68

File tree

3 files changed

+48
-58
lines changed

3 files changed

+48
-58
lines changed

llvm/lib/Target/Sparc/Sparc.td

Lines changed: 12 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -42,22 +42,28 @@ def FeatureV8Deprecated
4242
"Enable deprecated V8 instructions in V9 mode">;
4343
def FeatureVIS
4444
: SubtargetFeature<"vis", "IsVIS", "true",
45-
"Enable UltraSPARC Visual Instruction Set extensions">;
45+
"Enable UltraSPARC Visual Instruction Set extensions",
46+
[FeatureV9]>;
4647
def FeatureVIS2
4748
: SubtargetFeature<"vis2", "IsVIS2", "true",
48-
"Enable Visual Instruction Set extensions II">;
49+
"Enable Visual Instruction Set extensions II",
50+
[FeatureV9]>;
4951
def FeatureVIS3
5052
: SubtargetFeature<"vis3", "IsVIS3", "true",
51-
"Enable Visual Instruction Set extensions III">;
53+
"Enable Visual Instruction Set extensions III",
54+
[FeatureV9]>;
5255
def FeatureUA2005
5356
: SubtargetFeature<"ua2005", "IsUA2005", "true",
54-
"Enable UltraSPARC Architecture 2005 extensions">;
57+
"Enable UltraSPARC Architecture 2005 extensions",
58+
[FeatureV9, FeatureVIS, FeatureVIS2]>;
5559
def FeatureUA2007
5660
: SubtargetFeature<"ua2007", "IsUA2007", "true",
57-
"Enable UltraSPARC Architecture 2007 extensions">;
61+
"Enable UltraSPARC Architecture 2007 extensions",
62+
[FeatureV9, FeatureVIS, FeatureVIS2]>;
5863
def FeatureOSA2011
5964
: SubtargetFeature<"osa2011", "IsOSA2011", "true",
60-
"Enable Oracle SPARC Architecture 2011 extensions">;
65+
"Enable Oracle SPARC Architecture 2011 extensions",
66+
[FeatureV9, FeatureVIS, FeatureVIS2, FeatureVIS3]>;
6167
def FeatureLeon
6268
: SubtargetFeature<"leon", "IsLeon", "true",
6369
"Enable LEON extensions">;

llvm/test/CodeGen/SPARC/ctlz.ll

Lines changed: 16 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -207,20 +207,15 @@ define i64 @i64_nopoison(i64 %x) nounwind {
207207
;
208208
; SPARC-VIS3-LABEL: i64_nopoison:
209209
; SPARC-VIS3: ! %bb.0:
210+
; SPARC-VIS3-NEXT: srl %o0, 0, %o2
211+
; SPARC-VIS3-NEXT: lzcnt %o2, %o2
212+
; SPARC-VIS3-NEXT: add %o2, -32, %o2
213+
; SPARC-VIS3-NEXT: srl %o1, 0, %o1
214+
; SPARC-VIS3-NEXT: lzcnt %o1, %o1
215+
; SPARC-VIS3-NEXT: add %o1, -32, %o1
216+
; SPARC-VIS3-NEXT: add %o1, 32, %o1
210217
; SPARC-VIS3-NEXT: cmp %o0, 0
211-
; SPARC-VIS3-NEXT: bne .LBB2_2
212-
; SPARC-VIS3-NEXT: nop
213-
; SPARC-VIS3-NEXT: ! %bb.1:
214-
; SPARC-VIS3-NEXT: srl %o1, 0, %o0
215-
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
216-
; SPARC-VIS3-NEXT: add %o0, -32, %o0
217-
; SPARC-VIS3-NEXT: add %o0, 32, %o1
218-
; SPARC-VIS3-NEXT: retl
219-
; SPARC-VIS3-NEXT: mov %g0, %o0
220-
; SPARC-VIS3-NEXT: .LBB2_2:
221-
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
222-
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
223-
; SPARC-VIS3-NEXT: add %o0, -32, %o1
218+
; SPARC-VIS3-NEXT: movne %icc, %o2, %o1
224219
; SPARC-VIS3-NEXT: retl
225220
; SPARC-VIS3-NEXT: mov %g0, %o0
226221
;
@@ -311,20 +306,15 @@ define i64 @i64_poison(i64 %x) nounwind {
311306
;
312307
; SPARC-VIS3-LABEL: i64_poison:
313308
; SPARC-VIS3: ! %bb.0:
309+
; SPARC-VIS3-NEXT: srl %o0, 0, %o2
310+
; SPARC-VIS3-NEXT: lzcnt %o2, %o2
311+
; SPARC-VIS3-NEXT: add %o2, -32, %o2
312+
; SPARC-VIS3-NEXT: srl %o1, 0, %o1
313+
; SPARC-VIS3-NEXT: lzcnt %o1, %o1
314+
; SPARC-VIS3-NEXT: add %o1, -32, %o1
315+
; SPARC-VIS3-NEXT: add %o1, 32, %o1
314316
; SPARC-VIS3-NEXT: cmp %o0, 0
315-
; SPARC-VIS3-NEXT: bne .LBB3_2
316-
; SPARC-VIS3-NEXT: nop
317-
; SPARC-VIS3-NEXT: ! %bb.1:
318-
; SPARC-VIS3-NEXT: srl %o1, 0, %o0
319-
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
320-
; SPARC-VIS3-NEXT: add %o0, -32, %o0
321-
; SPARC-VIS3-NEXT: add %o0, 32, %o1
322-
; SPARC-VIS3-NEXT: retl
323-
; SPARC-VIS3-NEXT: mov %g0, %o0
324-
; SPARC-VIS3-NEXT: .LBB3_2:
325-
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
326-
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
327-
; SPARC-VIS3-NEXT: add %o0, -32, %o1
317+
; SPARC-VIS3-NEXT: movne %icc, %o2, %o1
328318
; SPARC-VIS3-NEXT: retl
329319
; SPARC-VIS3-NEXT: mov %g0, %o0
330320
;

llvm/test/CodeGen/SPARC/cttz.ll

Lines changed: 20 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -254,28 +254,25 @@ define i64 @i64_nopoison(i64 %x) nounwind {
254254
;
255255
; SPARC-VIS3-LABEL: i64_nopoison:
256256
; SPARC-VIS3: ! %bb.0:
257-
; SPARC-VIS3-NEXT: cmp %o1, 0
258-
; SPARC-VIS3-NEXT: bne .LBB2_2
259-
; SPARC-VIS3-NEXT: nop
260-
; SPARC-VIS3-NEXT: ! %bb.1:
261-
; SPARC-VIS3-NEXT: add %o0, -1, %o1
262-
; SPARC-VIS3-NEXT: andn %o1, %o0, %o0
257+
; SPARC-VIS3-NEXT: add %o0, -1, %o2
258+
; SPARC-VIS3-NEXT: andn %o2, %o0, %o0
263259
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
264260
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
265261
; SPARC-VIS3-NEXT: add %o0, -32, %o0
266-
; SPARC-VIS3-NEXT: ba .LBB2_3
267-
; SPARC-VIS3-NEXT: mov 64, %o1
268-
; SPARC-VIS3-NEXT: .LBB2_2:
262+
; SPARC-VIS3-NEXT: mov 64, %o2
263+
; SPARC-VIS3-NEXT: sub %o2, %o0, %o2
269264
; SPARC-VIS3-NEXT: add %o1, -1, %o0
270265
; SPARC-VIS3-NEXT: andn %o0, %o1, %o0
271266
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
272267
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
273268
; SPARC-VIS3-NEXT: add %o0, -32, %o0
274-
; SPARC-VIS3-NEXT: mov 32, %o1
275-
; SPARC-VIS3-NEXT: .LBB2_3:
276-
; SPARC-VIS3-NEXT: sub %o1, %o0, %o1
277-
; SPARC-VIS3-NEXT: retl
269+
; SPARC-VIS3-NEXT: mov 32, %o3
270+
; SPARC-VIS3-NEXT: sub %o3, %o0, %o0
271+
; SPARC-VIS3-NEXT: cmp %o1, 0
272+
; SPARC-VIS3-NEXT: movne %icc, %o0, %o2
278273
; SPARC-VIS3-NEXT: mov %g0, %o0
274+
; SPARC-VIS3-NEXT: retl
275+
; SPARC-VIS3-NEXT: mov %o2, %o1
279276
;
280277
; SPARC64-LABEL: i64_nopoison:
281278
; SPARC64: ! %bb.0:
@@ -376,28 +373,25 @@ define i64 @i64_poison(i64 %x) nounwind {
376373
;
377374
; SPARC-VIS3-LABEL: i64_poison:
378375
; SPARC-VIS3: ! %bb.0:
379-
; SPARC-VIS3-NEXT: cmp %o1, 0
380-
; SPARC-VIS3-NEXT: bne .LBB3_2
381-
; SPARC-VIS3-NEXT: nop
382-
; SPARC-VIS3-NEXT: ! %bb.1:
383-
; SPARC-VIS3-NEXT: add %o0, -1, %o1
384-
; SPARC-VIS3-NEXT: andn %o1, %o0, %o0
376+
; SPARC-VIS3-NEXT: add %o0, -1, %o2
377+
; SPARC-VIS3-NEXT: andn %o2, %o0, %o0
385378
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
386379
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
387380
; SPARC-VIS3-NEXT: add %o0, -32, %o0
388-
; SPARC-VIS3-NEXT: ba .LBB3_3
389-
; SPARC-VIS3-NEXT: mov 64, %o1
390-
; SPARC-VIS3-NEXT: .LBB3_2:
381+
; SPARC-VIS3-NEXT: mov 64, %o2
382+
; SPARC-VIS3-NEXT: sub %o2, %o0, %o2
391383
; SPARC-VIS3-NEXT: add %o1, -1, %o0
392384
; SPARC-VIS3-NEXT: andn %o0, %o1, %o0
393385
; SPARC-VIS3-NEXT: srl %o0, 0, %o0
394386
; SPARC-VIS3-NEXT: lzcnt %o0, %o0
395387
; SPARC-VIS3-NEXT: add %o0, -32, %o0
396-
; SPARC-VIS3-NEXT: mov 32, %o1
397-
; SPARC-VIS3-NEXT: .LBB3_3:
398-
; SPARC-VIS3-NEXT: sub %o1, %o0, %o1
399-
; SPARC-VIS3-NEXT: retl
388+
; SPARC-VIS3-NEXT: mov 32, %o3
389+
; SPARC-VIS3-NEXT: sub %o3, %o0, %o0
390+
; SPARC-VIS3-NEXT: cmp %o1, 0
391+
; SPARC-VIS3-NEXT: movne %icc, %o0, %o2
400392
; SPARC-VIS3-NEXT: mov %g0, %o0
393+
; SPARC-VIS3-NEXT: retl
394+
; SPARC-VIS3-NEXT: mov %o2, %o1
401395
;
402396
; SPARC64-LABEL: i64_poison:
403397
; SPARC64: ! %bb.0:

0 commit comments

Comments
 (0)