[SPARC][IAS] Add support for prefetcha instruction
This adds support for `prefetcha` instruction for prefetching from alternate address spaces. Reviewers: jrtc27, brad0, rorth, s-barannikov Reviewed By: s-barannikov Pull Request: https://github.com/llvm/llvm-project/pull/94250
This commit is contained in:
@@ -1782,6 +1782,13 @@ let Predicates = [HasV9] in {
|
||||
def PREFETCHi : F3_2<3, 0b101101,
|
||||
(outs), (ins (MEMri $rs1, $simm13):$addr, PrefetchTag:$rd),
|
||||
"prefetch [$addr], $rd", []>;
|
||||
def PREFETCHAr : F3_1_asi<3, 0b111101, (outs),
|
||||
(ins (MEMrr $rs1, $rs2):$addr, ASITag:$asi, PrefetchTag:$rd),
|
||||
"prefetcha [$addr] $asi, $rd", []>;
|
||||
let Uses = [ASR3] in
|
||||
def PREFETCHAi : F3_2<3, 0b111101, (outs),
|
||||
(ins (MEMri $rs1, $simm13):$addr, PrefetchTag:$rd),
|
||||
"prefetcha [$addr] %asi, $rd", []>;
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -32,3 +32,8 @@
|
||||
0xd5 0xf6 0x11 0x56
|
||||
# V9: casxa [%i0] #ASI_SNF_L, %l6, %o2
|
||||
0xd5 0xf6 0x11 0x76
|
||||
|
||||
# V9: prefetcha [%i1+3968] %asi, #one_read
|
||||
0xc3 0xee 0x6f 0x80
|
||||
# V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read
|
||||
0xc3 0xee 0x50 0x7a
|
||||
|
||||
@@ -647,6 +647,36 @@
|
||||
! V9: prefetch [%i1+%i2], #one_write_strong ! encoding: [0xef,0x6e,0x40,0x1a]
|
||||
prefetch [ %i1 + %i2 ], #one_write_strong
|
||||
|
||||
! V8: error: malformed ASI tag, must be a constant integer expression
|
||||
! V8-NEXT: prefetcha [ %i1 + 0xf80 ] %asi, 1
|
||||
! V9: prefetcha [%i1+3968] %asi, #one_read ! encoding: [0xc3,0xee,0x6f,0x80]
|
||||
prefetcha [ %i1 + 0xf80 ] %asi, 1
|
||||
|
||||
! V8: error: malformed ASI tag, must be a constant integer expression
|
||||
! V8-NEXT: prefetcha [ %i1 + 0xf80 ] %asi, #one_read
|
||||
! V9: prefetcha [%i1+3968] %asi, #one_read ! encoding: [0xc3,0xee,0x6f,0x80]
|
||||
prefetcha [ %i1 + 0xf80 ] %asi, #one_read
|
||||
|
||||
! V8: error: malformed ASI tag, must be a constant integer expression
|
||||
! V8-NEXT: prefetcha [ %i1 + %i2 ] #ASI_SNF, 1
|
||||
! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a]
|
||||
prefetcha [ %i1 + %i2 ] #ASI_SNF, 1
|
||||
|
||||
! V8: error: malformed ASI tag, must be a constant integer expression
|
||||
! V8-NEXT: prefetcha [ %i1 + %i2 ] #ASI_SNF, #one_read
|
||||
! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a]
|
||||
prefetcha [ %i1 + %i2 ] #ASI_SNF, #one_read
|
||||
|
||||
! V8: error: invalid operand for instruction
|
||||
! V8-NEXT: prefetcha [ %i1 + %i2 ] 131, 1
|
||||
! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a]
|
||||
prefetcha [ %i1 + %i2 ] 131, 1
|
||||
|
||||
! V8: error: unexpected token
|
||||
! V8-NEXT: prefetcha [ %i1 + %i2 ] 131, #one_read
|
||||
! V9: prefetcha [%i1+%i2] #ASI_SNF, #one_read ! encoding: [0xc3,0xee,0x50,0x7a]
|
||||
prefetcha [ %i1 + %i2 ] 131, #one_read
|
||||
|
||||
! V8: error: instruction requires a CPU feature not currently enabled
|
||||
! V8-NEXT: done
|
||||
! V9: done ! encoding: [0x81,0xf0,0x00,0x00]
|
||||
|
||||
Reference in New Issue
Block a user