// Copyright 2025 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package asmgen var ArchLoong64 = &Arch{ Name: "loong64", WordBits: 64, WordBytes: 8, CarrySafeLoop: true, regs: []string{ // R0 is set to 0. // R1 is LR. // R2 is ??? // R3 is SP. // R22 is g. // R28 and R29 are our virtual carry flags. // R30 is the linker/assembler temp, which we use too. "R4", "R5", "R6", "R7", "R8", "R9", "R10", "R11", "R12", "R13", "R14", "R15", "R16", "R17", "R18", "R19", "R20", "R21", "R23", "R24", "R25", "R26", "R27", "R31", }, reg0: "R0", regCarry: "R28", regAltCarry: "R29", regTmp: "R30", mov: "MOVV", add: "ADDVU", sub: "SUBVU", sltu: "SGTU", mul: "MULV", mulhi: "MULHVU", lsh: "SLLV", rsh: "SRLV", and: "AND", or: "OR", xor: "XOR", jmpZero: "BEQ %s, %s", jmpNonZero: "BNE %s, %s", }