summaryrefslogtreecommitdiff
path: root/src/arch/arm/isa/insts/neon.isa
diff options
context:
space:
mode:
Diffstat (limited to 'src/arch/arm/isa/insts/neon.isa')
-rw-r--r--src/arch/arm/isa/insts/neon.isa22
1 files changed, 14 insertions, 8 deletions
diff --git a/src/arch/arm/isa/insts/neon.isa b/src/arch/arm/isa/insts/neon.isa
index ca5c3038c..166176602 100644
--- a/src/arch/arm/isa/insts/neon.isa
+++ b/src/arch/arm/isa/insts/neon.isa
@@ -1058,7 +1058,11 @@ output header {{
}
}};
-output exec {{
+let {{
+ header_output = ""
+ exec_output = ""
+
+ vcompares = '''
static float
vcgtFunc(float op1, float op2)
{
@@ -1082,7 +1086,8 @@ output exec {{
return 2.0;
return (op1 == op2) ? 0.0 : 1.0;
}
-
+'''
+ vcomparesL = '''
static float
vcleFunc(float op1, float op2)
{
@@ -1098,7 +1103,8 @@ output exec {{
return 2.0;
return (op1 < op2) ? 0.0 : 1.0;
}
-
+'''
+ vacomparesG = '''
static float
vacgtFunc(float op1, float op2)
{
@@ -1114,12 +1120,9 @@ output exec {{
return 2.0;
return (fabsf(op1) >= fabsf(op2)) ? 0.0 : 1.0;
}
-}};
-
-let {{
+'''
- header_output = ""
- exec_output = ""
+ exec_output += vcompares + vacomparesG
smallUnsignedTypes = ("uint8_t", "uint16_t", "uint32_t")
unsignedTypes = smallUnsignedTypes + ("uint64_t",)
@@ -3414,6 +3417,9 @@ let {{
twoRegMiscInst("vrev64", "NVrev64D", "SimdAluOp", smallUnsignedTypes, 2, vrev64Code)
twoRegMiscInst("vrev64", "NVrev64Q", "SimdAluOp", smallUnsignedTypes, 4, vrev64Code)
+ split('exec')
+ exec_output += vcompares + vcomparesL
+
vpaddlCode = '''
destElem = (BigElement)srcElem1 + (BigElement)srcElem2;
'''