mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-10-31 08:12:26 -05:00 
			
		
		
		
	[chore] Update gin to v1.9.0 (#1553)
This commit is contained in:
		
					parent
					
						
							
								689a10fe17
							
						
					
				
			
			
				commit
				
					
						ecdc8379fa
					
				
			
		
					 347 changed files with 166814 additions and 3671 deletions
				
			
		
							
								
								
									
										644
									
								
								vendor/github.com/twitchyliquid64/golang-asm/obj/riscv/cpu.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										644
									
								
								vendor/github.com/twitchyliquid64/golang-asm/obj/riscv/cpu.go
									
										
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							|  | @ -0,0 +1,644 @@ | |||
| //	Copyright © 1994-1999 Lucent Technologies Inc.  All rights reserved. | ||||
| //	Portions Copyright © 1995-1997 C H Forsyth (forsyth@terzarima.net) | ||||
| //	Portions Copyright © 1997-1999 Vita Nuova Limited | ||||
| //	Portions Copyright © 2000-2008 Vita Nuova Holdings Limited (www.vitanuova.com) | ||||
| //	Portions Copyright © 2004,2006 Bruce Ellis | ||||
| //	Portions Copyright © 2005-2007 C H Forsyth (forsyth@terzarima.net) | ||||
| //	Revisions Copyright © 2000-2008 Lucent Technologies Inc. and others | ||||
| //	Portions Copyright © 2009 The Go Authors.  All rights reserved. | ||||
| //	Portions Copyright © 2019 The Go Authors.  All rights reserved. | ||||
| // | ||||
| // Permission is hereby granted, free of charge, to any person obtaining a copy | ||||
| // of this software and associated documentation files (the "Software"), to deal | ||||
| // in the Software without restriction, including without limitation the rights | ||||
| // to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||||
| // copies of the Software, and to permit persons to whom the Software is | ||||
| // furnished to do so, subject to the following conditions: | ||||
| // | ||||
| // The above copyright notice and this permission notice shall be included in | ||||
| // all copies or substantial portions of the Software. | ||||
| // | ||||
| // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||||
| // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||||
| // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL THE | ||||
| // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||||
| // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||||
| // OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN | ||||
| // THE SOFTWARE. | ||||
| 
 | ||||
| package riscv | ||||
| 
 | ||||
| import "github.com/twitchyliquid64/golang-asm/obj" | ||||
| 
 | ||||
| //go:generate go run ../stringer.go -i $GOFILE -o anames.go -p riscv | ||||
| 
 | ||||
| const ( | ||||
| 	// Base register numberings. | ||||
| 	REG_X0 = obj.RBaseRISCV + iota | ||||
| 	REG_X1 | ||||
| 	REG_X2 | ||||
| 	REG_X3 | ||||
| 	REG_X4 | ||||
| 	REG_X5 | ||||
| 	REG_X6 | ||||
| 	REG_X7 | ||||
| 	REG_X8 | ||||
| 	REG_X9 | ||||
| 	REG_X10 | ||||
| 	REG_X11 | ||||
| 	REG_X12 | ||||
| 	REG_X13 | ||||
| 	REG_X14 | ||||
| 	REG_X15 | ||||
| 	REG_X16 | ||||
| 	REG_X17 | ||||
| 	REG_X18 | ||||
| 	REG_X19 | ||||
| 	REG_X20 | ||||
| 	REG_X21 | ||||
| 	REG_X22 | ||||
| 	REG_X23 | ||||
| 	REG_X24 | ||||
| 	REG_X25 | ||||
| 	REG_X26 | ||||
| 	REG_X27 | ||||
| 	REG_X28 | ||||
| 	REG_X29 | ||||
| 	REG_X30 | ||||
| 	REG_X31 | ||||
| 
 | ||||
| 	// FP register numberings. | ||||
| 	REG_F0 | ||||
| 	REG_F1 | ||||
| 	REG_F2 | ||||
| 	REG_F3 | ||||
| 	REG_F4 | ||||
| 	REG_F5 | ||||
| 	REG_F6 | ||||
| 	REG_F7 | ||||
| 	REG_F8 | ||||
| 	REG_F9 | ||||
| 	REG_F10 | ||||
| 	REG_F11 | ||||
| 	REG_F12 | ||||
| 	REG_F13 | ||||
| 	REG_F14 | ||||
| 	REG_F15 | ||||
| 	REG_F16 | ||||
| 	REG_F17 | ||||
| 	REG_F18 | ||||
| 	REG_F19 | ||||
| 	REG_F20 | ||||
| 	REG_F21 | ||||
| 	REG_F22 | ||||
| 	REG_F23 | ||||
| 	REG_F24 | ||||
| 	REG_F25 | ||||
| 	REG_F26 | ||||
| 	REG_F27 | ||||
| 	REG_F28 | ||||
| 	REG_F29 | ||||
| 	REG_F30 | ||||
| 	REG_F31 | ||||
| 
 | ||||
| 	// This marks the end of the register numbering. | ||||
| 	REG_END | ||||
| 
 | ||||
| 	// General registers reassigned to ABI names. | ||||
| 	REG_ZERO = REG_X0 | ||||
| 	REG_RA   = REG_X1 // aka REG_LR | ||||
| 	REG_SP   = REG_X2 | ||||
| 	REG_GP   = REG_X3 // aka REG_SB | ||||
| 	REG_TP   = REG_X4 // aka REG_G | ||||
| 	REG_T0   = REG_X5 | ||||
| 	REG_T1   = REG_X6 | ||||
| 	REG_T2   = REG_X7 | ||||
| 	REG_S0   = REG_X8 | ||||
| 	REG_S1   = REG_X9 | ||||
| 	REG_A0   = REG_X10 | ||||
| 	REG_A1   = REG_X11 | ||||
| 	REG_A2   = REG_X12 | ||||
| 	REG_A3   = REG_X13 | ||||
| 	REG_A4   = REG_X14 | ||||
| 	REG_A5   = REG_X15 | ||||
| 	REG_A6   = REG_X16 | ||||
| 	REG_A7   = REG_X17 | ||||
| 	REG_S2   = REG_X18 | ||||
| 	REG_S3   = REG_X19 | ||||
| 	REG_S4   = REG_X20 // aka REG_CTXT | ||||
| 	REG_S5   = REG_X21 | ||||
| 	REG_S6   = REG_X22 | ||||
| 	REG_S7   = REG_X23 | ||||
| 	REG_S8   = REG_X24 | ||||
| 	REG_S9   = REG_X25 | ||||
| 	REG_S10  = REG_X26 | ||||
| 	REG_S11  = REG_X27 | ||||
| 	REG_T3   = REG_X28 | ||||
| 	REG_T4   = REG_X29 | ||||
| 	REG_T5   = REG_X30 | ||||
| 	REG_T6   = REG_X31 // aka REG_TMP | ||||
| 
 | ||||
| 	// Go runtime register names. | ||||
| 	REG_G    = REG_TP // G pointer. | ||||
| 	REG_CTXT = REG_S4 // Context for closures. | ||||
| 	REG_LR   = REG_RA // Link register. | ||||
| 	REG_TMP  = REG_T6 // Reserved for assembler use. | ||||
| 
 | ||||
| 	// ABI names for floating point registers. | ||||
| 	REG_FT0  = REG_F0 | ||||
| 	REG_FT1  = REG_F1 | ||||
| 	REG_FT2  = REG_F2 | ||||
| 	REG_FT3  = REG_F3 | ||||
| 	REG_FT4  = REG_F4 | ||||
| 	REG_FT5  = REG_F5 | ||||
| 	REG_FT6  = REG_F6 | ||||
| 	REG_FT7  = REG_F7 | ||||
| 	REG_FS0  = REG_F8 | ||||
| 	REG_FS1  = REG_F9 | ||||
| 	REG_FA0  = REG_F10 | ||||
| 	REG_FA1  = REG_F11 | ||||
| 	REG_FA2  = REG_F12 | ||||
| 	REG_FA3  = REG_F13 | ||||
| 	REG_FA4  = REG_F14 | ||||
| 	REG_FA5  = REG_F15 | ||||
| 	REG_FA6  = REG_F16 | ||||
| 	REG_FA7  = REG_F17 | ||||
| 	REG_FS2  = REG_F18 | ||||
| 	REG_FS3  = REG_F19 | ||||
| 	REG_FS4  = REG_F20 | ||||
| 	REG_FS5  = REG_F21 | ||||
| 	REG_FS6  = REG_F22 | ||||
| 	REG_FS7  = REG_F23 | ||||
| 	REG_FS8  = REG_F24 | ||||
| 	REG_FS9  = REG_F25 | ||||
| 	REG_FS10 = REG_F26 | ||||
| 	REG_FS11 = REG_F27 | ||||
| 	REG_FT8  = REG_F28 | ||||
| 	REG_FT9  = REG_F29 | ||||
| 	REG_FT10 = REG_F30 | ||||
| 	REG_FT11 = REG_F31 | ||||
| 
 | ||||
| 	// Names generated by the SSA compiler. | ||||
| 	REGSP = REG_SP | ||||
| 	REGG  = REG_G | ||||
| ) | ||||
| 
 | ||||
| // https://github.com/riscv/riscv-elf-psabi-doc/blob/master/riscv-elf.md#dwarf-register-numbers | ||||
| var RISCV64DWARFRegisters = map[int16]int16{ | ||||
| 	// Integer Registers. | ||||
| 	REG_X0:  0, | ||||
| 	REG_X1:  1, | ||||
| 	REG_X2:  2, | ||||
| 	REG_X3:  3, | ||||
| 	REG_X4:  4, | ||||
| 	REG_X5:  5, | ||||
| 	REG_X6:  6, | ||||
| 	REG_X7:  7, | ||||
| 	REG_X8:  8, | ||||
| 	REG_X9:  9, | ||||
| 	REG_X10: 10, | ||||
| 	REG_X11: 11, | ||||
| 	REG_X12: 12, | ||||
| 	REG_X13: 13, | ||||
| 	REG_X14: 14, | ||||
| 	REG_X15: 15, | ||||
| 	REG_X16: 16, | ||||
| 	REG_X17: 17, | ||||
| 	REG_X18: 18, | ||||
| 	REG_X19: 19, | ||||
| 	REG_X20: 20, | ||||
| 	REG_X21: 21, | ||||
| 	REG_X22: 22, | ||||
| 	REG_X23: 23, | ||||
| 	REG_X24: 24, | ||||
| 	REG_X25: 25, | ||||
| 	REG_X26: 26, | ||||
| 	REG_X27: 27, | ||||
| 	REG_X28: 28, | ||||
| 	REG_X29: 29, | ||||
| 	REG_X30: 30, | ||||
| 	REG_X31: 31, | ||||
| 
 | ||||
| 	// Floating-Point Registers. | ||||
| 	REG_F0:  32, | ||||
| 	REG_F1:  33, | ||||
| 	REG_F2:  34, | ||||
| 	REG_F3:  35, | ||||
| 	REG_F4:  36, | ||||
| 	REG_F5:  37, | ||||
| 	REG_F6:  38, | ||||
| 	REG_F7:  39, | ||||
| 	REG_F8:  40, | ||||
| 	REG_F9:  41, | ||||
| 	REG_F10: 42, | ||||
| 	REG_F11: 43, | ||||
| 	REG_F12: 44, | ||||
| 	REG_F13: 45, | ||||
| 	REG_F14: 46, | ||||
| 	REG_F15: 47, | ||||
| 	REG_F16: 48, | ||||
| 	REG_F17: 49, | ||||
| 	REG_F18: 50, | ||||
| 	REG_F19: 51, | ||||
| 	REG_F20: 52, | ||||
| 	REG_F21: 53, | ||||
| 	REG_F22: 54, | ||||
| 	REG_F23: 55, | ||||
| 	REG_F24: 56, | ||||
| 	REG_F25: 57, | ||||
| 	REG_F26: 58, | ||||
| 	REG_F27: 59, | ||||
| 	REG_F28: 60, | ||||
| 	REG_F29: 61, | ||||
| 	REG_F30: 62, | ||||
| 	REG_F31: 63, | ||||
| } | ||||
| 
 | ||||
| // Prog.Mark flags. | ||||
| const ( | ||||
| 	// NEED_PCREL_ITYPE_RELOC is set on AUIPC instructions to indicate that | ||||
| 	// it is the first instruction in an AUIPC + I-type pair that needs a | ||||
| 	// R_RISCV_PCREL_ITYPE relocation. | ||||
| 	NEED_PCREL_ITYPE_RELOC = 1 << 0 | ||||
| 
 | ||||
| 	// NEED_PCREL_STYPE_RELOC is set on AUIPC instructions to indicate that | ||||
| 	// it is the first instruction in an AUIPC + S-type pair that needs a | ||||
| 	// R_RISCV_PCREL_STYPE relocation. | ||||
| 	NEED_PCREL_STYPE_RELOC = 1 << 1 | ||||
| ) | ||||
| 
 | ||||
| // RISC-V mnemonics, as defined in the "opcodes" and "opcodes-pseudo" files | ||||
| // from: | ||||
| // | ||||
| //    https://github.com/riscv/riscv-opcodes | ||||
| // | ||||
| // As well as some pseudo-mnemonics (e.g. MOV) used only in the assembler. | ||||
| // | ||||
| // See also "The RISC-V Instruction Set Manual" at: | ||||
| // | ||||
| //    https://riscv.org/specifications/ | ||||
| // | ||||
| // If you modify this table, you MUST run 'go generate' to regenerate anames.go! | ||||
| const ( | ||||
| 	// Unprivileged ISA (Document Version 20190608-Base-Ratified) | ||||
| 
 | ||||
| 	// 2.4: Integer Computational Instructions | ||||
| 	AADDI = obj.ABaseRISCV + obj.A_ARCHSPECIFIC + iota | ||||
| 	ASLTI | ||||
| 	ASLTIU | ||||
| 	AANDI | ||||
| 	AORI | ||||
| 	AXORI | ||||
| 	ASLLI | ||||
| 	ASRLI | ||||
| 	ASRAI | ||||
| 	ALUI | ||||
| 	AAUIPC | ||||
| 	AADD | ||||
| 	ASLT | ||||
| 	ASLTU | ||||
| 	AAND | ||||
| 	AOR | ||||
| 	AXOR | ||||
| 	ASLL | ||||
| 	ASRL | ||||
| 	ASUB | ||||
| 	ASRA | ||||
| 
 | ||||
| 	// The SLL/SRL/SRA instructions differ slightly between RV32 and RV64, | ||||
| 	// hence there are pseudo-opcodes for the RV32 specific versions. | ||||
| 	ASLLIRV32 | ||||
| 	ASRLIRV32 | ||||
| 	ASRAIRV32 | ||||
| 
 | ||||
| 	// 2.5: Control Transfer Instructions | ||||
| 	AJAL | ||||
| 	AJALR | ||||
| 	ABEQ | ||||
| 	ABNE | ||||
| 	ABLT | ||||
| 	ABLTU | ||||
| 	ABGE | ||||
| 	ABGEU | ||||
| 
 | ||||
| 	// 2.6: Load and Store Instructions | ||||
| 	ALW | ||||
| 	ALWU | ||||
| 	ALH | ||||
| 	ALHU | ||||
| 	ALB | ||||
| 	ALBU | ||||
| 	ASW | ||||
| 	ASH | ||||
| 	ASB | ||||
| 
 | ||||
| 	// 2.7: Memory Ordering Instructions | ||||
| 	AFENCE | ||||
| 	AFENCEI | ||||
| 	AFENCETSO | ||||
| 
 | ||||
| 	// 5.2: Integer Computational Instructions (RV64I) | ||||
| 	AADDIW | ||||
| 	ASLLIW | ||||
| 	ASRLIW | ||||
| 	ASRAIW | ||||
| 	AADDW | ||||
| 	ASLLW | ||||
| 	ASRLW | ||||
| 	ASUBW | ||||
| 	ASRAW | ||||
| 
 | ||||
| 	// 5.3: Load and Store Instructions (RV64I) | ||||
| 	ALD | ||||
| 	ASD | ||||
| 
 | ||||
| 	// 7.1: Multiplication Operations | ||||
| 	AMUL | ||||
| 	AMULH | ||||
| 	AMULHU | ||||
| 	AMULHSU | ||||
| 	AMULW | ||||
| 	ADIV | ||||
| 	ADIVU | ||||
| 	AREM | ||||
| 	AREMU | ||||
| 	ADIVW | ||||
| 	ADIVUW | ||||
| 	AREMW | ||||
| 	AREMUW | ||||
| 
 | ||||
| 	// 8.2: Load-Reserved/Store-Conditional Instructions | ||||
| 	ALRD | ||||
| 	ASCD | ||||
| 	ALRW | ||||
| 	ASCW | ||||
| 
 | ||||
| 	// 8.3: Atomic Memory Operations | ||||
| 	AAMOSWAPD | ||||
| 	AAMOADDD | ||||
| 	AAMOANDD | ||||
| 	AAMOORD | ||||
| 	AAMOXORD | ||||
| 	AAMOMAXD | ||||
| 	AAMOMAXUD | ||||
| 	AAMOMIND | ||||
| 	AAMOMINUD | ||||
| 	AAMOSWAPW | ||||
| 	AAMOADDW | ||||
| 	AAMOANDW | ||||
| 	AAMOORW | ||||
| 	AAMOXORW | ||||
| 	AAMOMAXW | ||||
| 	AAMOMAXUW | ||||
| 	AAMOMINW | ||||
| 	AAMOMINUW | ||||
| 
 | ||||
| 	// 10.1: Base Counters and Timers | ||||
| 	ARDCYCLE | ||||
| 	ARDCYCLEH | ||||
| 	ARDTIME | ||||
| 	ARDTIMEH | ||||
| 	ARDINSTRET | ||||
| 	ARDINSTRETH | ||||
| 
 | ||||
| 	// 11.2: Floating-Point Control and Status Register | ||||
| 	AFRCSR | ||||
| 	AFSCSR | ||||
| 	AFRRM | ||||
| 	AFSRM | ||||
| 	AFRFLAGS | ||||
| 	AFSFLAGS | ||||
| 	AFSRMI | ||||
| 	AFSFLAGSI | ||||
| 
 | ||||
| 	// 11.5: Single-Precision Load and Store Instructions | ||||
| 	AFLW | ||||
| 	AFSW | ||||
| 
 | ||||
| 	// 11.6: Single-Precision Floating-Point Computational Instructions | ||||
| 	AFADDS | ||||
| 	AFSUBS | ||||
| 	AFMULS | ||||
| 	AFDIVS | ||||
| 	AFMINS | ||||
| 	AFMAXS | ||||
| 	AFSQRTS | ||||
| 	AFMADDS | ||||
| 	AFMSUBS | ||||
| 	AFNMADDS | ||||
| 	AFNMSUBS | ||||
| 
 | ||||
| 	// 11.7: Single-Precision Floating-Point Conversion and Move Instructions | ||||
| 	AFCVTWS | ||||
| 	AFCVTLS | ||||
| 	AFCVTSW | ||||
| 	AFCVTSL | ||||
| 	AFCVTWUS | ||||
| 	AFCVTLUS | ||||
| 	AFCVTSWU | ||||
| 	AFCVTSLU | ||||
| 	AFSGNJS | ||||
| 	AFSGNJNS | ||||
| 	AFSGNJXS | ||||
| 	AFMVXS | ||||
| 	AFMVSX | ||||
| 	AFMVXW | ||||
| 	AFMVWX | ||||
| 
 | ||||
| 	// 11.8: Single-Precision Floating-Point Compare Instructions | ||||
| 	AFEQS | ||||
| 	AFLTS | ||||
| 	AFLES | ||||
| 
 | ||||
| 	// 11.9: Single-Precision Floating-Point Classify Instruction | ||||
| 	AFCLASSS | ||||
| 
 | ||||
| 	// 12.3: Double-Precision Load and Store Instructions | ||||
| 	AFLD | ||||
| 	AFSD | ||||
| 
 | ||||
| 	// 12.4: Double-Precision Floating-Point Computational Instructions | ||||
| 	AFADDD | ||||
| 	AFSUBD | ||||
| 	AFMULD | ||||
| 	AFDIVD | ||||
| 	AFMIND | ||||
| 	AFMAXD | ||||
| 	AFSQRTD | ||||
| 	AFMADDD | ||||
| 	AFMSUBD | ||||
| 	AFNMADDD | ||||
| 	AFNMSUBD | ||||
| 
 | ||||
| 	// 12.5: Double-Precision Floating-Point Conversion and Move Instructions | ||||
| 	AFCVTWD | ||||
| 	AFCVTLD | ||||
| 	AFCVTDW | ||||
| 	AFCVTDL | ||||
| 	AFCVTWUD | ||||
| 	AFCVTLUD | ||||
| 	AFCVTDWU | ||||
| 	AFCVTDLU | ||||
| 	AFCVTSD | ||||
| 	AFCVTDS | ||||
| 	AFSGNJD | ||||
| 	AFSGNJND | ||||
| 	AFSGNJXD | ||||
| 	AFMVXD | ||||
| 	AFMVDX | ||||
| 
 | ||||
| 	// 12.6: Double-Precision Floating-Point Compare Instructions | ||||
| 	AFEQD | ||||
| 	AFLTD | ||||
| 	AFLED | ||||
| 
 | ||||
| 	// 12.7: Double-Precision Floating-Point Classify Instruction | ||||
| 	AFCLASSD | ||||
| 
 | ||||
| 	// 13.1 Quad-Precision Load and Store Instructions | ||||
| 	AFLQ | ||||
| 	AFSQ | ||||
| 
 | ||||
| 	// 13.2: Quad-Precision Computational Instructions | ||||
| 	AFADDQ | ||||
| 	AFSUBQ | ||||
| 	AFMULQ | ||||
| 	AFDIVQ | ||||
| 	AFMINQ | ||||
| 	AFMAXQ | ||||
| 	AFSQRTQ | ||||
| 	AFMADDQ | ||||
| 	AFMSUBQ | ||||
| 	AFNMADDQ | ||||
| 	AFNMSUBQ | ||||
| 
 | ||||
| 	// 13.3 Quad-Precision Convert and Move Instructions | ||||
| 	AFCVTWQ | ||||
| 	AFCVTLQ | ||||
| 	AFCVTSQ | ||||
| 	AFCVTDQ | ||||
| 	AFCVTQW | ||||
| 	AFCVTQL | ||||
| 	AFCVTQS | ||||
| 	AFCVTQD | ||||
| 	AFCVTWUQ | ||||
| 	AFCVTLUQ | ||||
| 	AFCVTQWU | ||||
| 	AFCVTQLU | ||||
| 	AFSGNJQ | ||||
| 	AFSGNJNQ | ||||
| 	AFSGNJXQ | ||||
| 	AFMVXQ | ||||
| 	AFMVQX | ||||
| 
 | ||||
| 	// 13.4 Quad-Precision Floating-Point Compare Instructions | ||||
| 	AFEQQ | ||||
| 	AFLEQ | ||||
| 	AFLTQ | ||||
| 
 | ||||
| 	// 13.5 Quad-Precision Floating-Point Classify Instruction | ||||
| 	AFCLASSQ | ||||
| 
 | ||||
| 	// Privileged ISA (Version 20190608-Priv-MSU-Ratified) | ||||
| 
 | ||||
| 	// 3.1.9: Instructions to Access CSRs | ||||
| 	ACSRRW | ||||
| 	ACSRRS | ||||
| 	ACSRRC | ||||
| 	ACSRRWI | ||||
| 	ACSRRSI | ||||
| 	ACSRRCI | ||||
| 
 | ||||
| 	// 3.2.1: Environment Call and Breakpoint | ||||
| 	AECALL | ||||
| 	ASCALL | ||||
| 	AEBREAK | ||||
| 	ASBREAK | ||||
| 
 | ||||
| 	// 3.2.2: Trap-Return Instructions | ||||
| 	AMRET | ||||
| 	ASRET | ||||
| 	AURET | ||||
| 	ADRET | ||||
| 
 | ||||
| 	// 3.2.3: Wait for Interrupt | ||||
| 	AWFI | ||||
| 
 | ||||
| 	// 4.2.1: Supervisor Memory-Management Fence Instruction | ||||
| 	ASFENCEVMA | ||||
| 
 | ||||
| 	// Hypervisor Memory-Management Instructions | ||||
| 	AHFENCEGVMA | ||||
| 	AHFENCEVVMA | ||||
| 
 | ||||
| 	// The escape hatch. Inserts a single 32-bit word. | ||||
| 	AWORD | ||||
| 
 | ||||
| 	// Pseudo-instructions.  These get translated by the assembler into other | ||||
| 	// instructions, based on their operands. | ||||
| 	ABEQZ | ||||
| 	ABGEZ | ||||
| 	ABGT | ||||
| 	ABGTU | ||||
| 	ABGTZ | ||||
| 	ABLE | ||||
| 	ABLEU | ||||
| 	ABLEZ | ||||
| 	ABLTZ | ||||
| 	ABNEZ | ||||
| 	AFNEGD | ||||
| 	AFNEGS | ||||
| 	AFNED | ||||
| 	AFNES | ||||
| 	AMOV | ||||
| 	AMOVB | ||||
| 	AMOVBU | ||||
| 	AMOVF | ||||
| 	AMOVD | ||||
| 	AMOVH | ||||
| 	AMOVHU | ||||
| 	AMOVW | ||||
| 	AMOVWU | ||||
| 	ANEG | ||||
| 	ANEGW | ||||
| 	ANOT | ||||
| 	ASEQZ | ||||
| 	ASNEZ | ||||
| 
 | ||||
| 	// End marker | ||||
| 	ALAST | ||||
| ) | ||||
| 
 | ||||
| // All unary instructions which write to their arguments (as opposed to reading | ||||
| // from them) go here. The assembly parser uses this information to populate | ||||
| // its AST in a semantically reasonable way. | ||||
| // | ||||
| // Any instructions not listed here are assumed to either be non-unary or to read | ||||
| // from its argument. | ||||
| var unaryDst = map[obj.As]bool{ | ||||
| 	ARDCYCLE:    true, | ||||
| 	ARDCYCLEH:   true, | ||||
| 	ARDTIME:     true, | ||||
| 	ARDTIMEH:    true, | ||||
| 	ARDINSTRET:  true, | ||||
| 	ARDINSTRETH: true, | ||||
| } | ||||
| 
 | ||||
| // Instruction encoding masks. | ||||
| const ( | ||||
| 	// ITypeImmMask is a mask including only the immediate portion of | ||||
| 	// I-type instructions. | ||||
| 	ITypeImmMask = 0xfff00000 | ||||
| 
 | ||||
| 	// STypeImmMask is a mask including only the immediate portion of | ||||
| 	// S-type instructions. | ||||
| 	STypeImmMask = 0xfe000f80 | ||||
| 
 | ||||
| 	// UTypeImmMask is a mask including only the immediate portion of | ||||
| 	// U-type instructions. | ||||
| 	UTypeImmMask = 0xfffff000 | ||||
| 
 | ||||
| 	// UJTypeImmMask is a mask including only the immediate portion of | ||||
| 	// UJ-type instructions. | ||||
| 	UJTypeImmMask = UTypeImmMask | ||||
| ) | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue