summaryrefslogtreecommitdiffstats
path: root/js/src/jit/ABIFunctionType.yaml
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-19 00:47:55 +0000
commit26a029d407be480d791972afb5975cf62c9360a6 (patch)
treef435a8308119effd964b339f76abb83a57c29483 /js/src/jit/ABIFunctionType.yaml
parentInitial commit. (diff)
downloadfirefox-26a029d407be480d791972afb5975cf62c9360a6.tar.xz
firefox-26a029d407be480d791972afb5975cf62c9360a6.zip
Adding upstream version 124.0.1.upstream/124.0.1
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'js/src/jit/ABIFunctionType.yaml')
-rw-r--r--js/src/jit/ABIFunctionType.yaml280
1 files changed, 280 insertions, 0 deletions
diff --git a/js/src/jit/ABIFunctionType.yaml b/js/src/jit/ABIFunctionType.yaml
new file mode 100644
index 0000000000..4d115e05cb
--- /dev/null
+++ b/js/src/jit/ABIFunctionType.yaml
@@ -0,0 +1,280 @@
+# The definitions in here are processed by GenerateABIFunctionType.py to
+# generate the ABIFunctionType enum and simulator code for handling these
+# function types.
+#
+# The name field is optional and will be autogenerated if omitted. New
+# additions should generally use the autogenerated name.
+
+# VM functions that take 0-9 non-double arguments
+# and return a non-double value.
+- name: General0
+ ret: General
+ args: []
+- name: General1
+ ret: General
+ args: [General]
+- name: General2
+ ret: General
+ args: [General, General]
+- name: General3
+ ret: General
+ args: [General, General, General]
+- name: General4
+ ret: General
+ args: [General, General, General, General]
+- name: General5
+ ret: General
+ args: [General, General, General, General, General]
+- name: General6
+ ret: General
+ args: [General, General, General, General, General, General]
+- name: General7
+ ret: General
+ args: [General, General, General, General, General, General, General]
+- name: General8
+ ret: General
+ args: [General, General, General, General, General, General, General, General]
+
+# int64 f(double)
+- name: Int64_Double
+ ret: Int64
+ args: [Float64]
+
+# double f()
+- name: Double_None
+ ret: Float64
+ args: []
+
+# int f(double)
+- name: Int_Double
+ ret: General
+ args: [Float64]
+
+# int f(float32)
+- name: Int_Float32
+ ret: General
+ args: [Float32]
+
+# float f(float)
+- ret: Float32
+ args: [Float32]
+
+# float f(int, int)
+- name: Float32_IntInt
+ ret: Float32
+ args: [General, General]
+
+# double f(double)
+- name: Double_Double
+ ret: Float64
+ args: [Float64]
+
+# double f(int)
+- name: Double_Int
+ ret: Float64
+ args: [General]
+
+# double f(int, int)
+- name: Double_IntInt
+ ret: Float64
+ args: [General, General]
+
+# double f(double, int)
+- name: Double_DoubleInt
+ ret: Float64
+ args: [Float64, General]
+
+# double f(double, double)
+- name: Double_DoubleDouble
+ ret: Float64
+ args: [Float64, Float64]
+
+# float f(float, float)
+- ret: Float32
+ args: [Float32, Float32]
+
+# double f(int, double)
+- name: Double_IntDouble
+ ret: Float64
+ args: [General, Float64]
+
+# int f(int, double)
+- name: Int_IntDouble
+ ret: General
+ args: [General, Float64]
+
+# int f(double, int)
+- name: Int_DoubleInt
+ ret: General
+ args: [Float64, General]
+
+# double f(double, double, double)
+- name: Double_DoubleDoubleDouble
+ ret: Float64
+ args: [Float64, Float64, Float64]
+
+# double f(double, double, double, double)
+- name: Double_DoubleDoubleDoubleDouble
+ ret: Float64
+ args: [Float64, Float64, Float64, Float64]
+
+# int f(double, int, int)
+- name: Int_DoubleIntInt
+ ret: General
+ args: [Float64, General, General]
+
+# int f(int, double, int, int)
+- name: Int_IntDoubleIntInt
+ ret: General
+ args: [General, Float64, General, General]
+
+- name: Int_GeneralGeneralGeneralInt64
+ ret: General
+ args: [General, General, General, Int64]
+
+- name: Int_GeneralGeneralInt64Int64
+ ret: General
+ args: [General, General, Int64, Int64]
+
+# int32_t f(...) variants
+- ret: General
+ args: [General, Int32]
+
+- ret: General
+ args: [General, Int32, General]
+
+- ret: General
+ args: [General, Int32, Int32]
+
+- ret: General
+ args: [General, Int32, Int32, General, Int32]
+
+- name: General_GeneralGeneralInt32Int32
+ ret: General
+ args: [General, General, Int32, Int32]
+
+# int32_t f(...) variants
+- ret: Int32
+ args: [General]
+
+- ret: Int32
+ args: [General, General]
+
+- ret: Int32
+ args: [General, General, General]
+
+- ret: Int32
+ args: [General, General, General, Int32]
+
+- ret: Int32
+ args: [General, General, Int32]
+
+- ret: Int32
+ args: [General, General, Int32, General]
+
+- ret: Int32
+ args: [General, General, Int32, General, Int32, Int32, Int32]
+
+- ret: Int32
+ args: [General, General, Int32, Int32]
+
+- ret: Int32
+ args: [General, General, Int32, Int32, Int32, General, Int32]
+
+- ret: Int32
+ args: [General, Int32]
+
+- ret: Int32
+ args: [General, Int32, Float32, Float32, Float32, Float32, Int32, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Float32, Float32, Int32, Float32, Float32, Int32, Float32, Int32, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Float32, Float32, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, General, Int32]
+
+- ret: Int32
+ args: [General, Int32, General, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int32, Int32, Int32, Int32, General]
+
+- ret: Int32
+ args: [General, Int32, Int32, Int64, Int32]
+
+- ret: Int32
+ args: [General, Int32, Int64, Int64, Int32]
+
+- ret: Int32
+ args: [General, Int64, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int64, Int32, Int32, Int32, Int32]
+
+- ret: Int32
+ args: [General, Int64, Int32, Int64, General]
+
+- ret: Int32
+ args: [General, Int64, Int32, Int64, Int32]
+
+- ret: Int32
+ args: [General, Int64, Int64, General]
+
+- ret: Int32
+ args: [General, Int64, Int64, Int64]
+
+- ret: Int32
+ args: [General, Int64, Int64, Int64, General]
+
+- ret: Int32
+ args: [General, Int64, Int64, Int64, General, General]
+
+- ret: Int32
+ args: [General, Int64, Int64, Int64, Int32]
+
+- ret: Int32
+ args: [General, Int64, Int64, Int64, Int32, Int32]
+
+# Functions that return Int64 are tricky because SpiderMonkey's ReturnRegI64
+# does not match the ABI int64 return register on x86. Wasm only!
+- ret: Int64
+ args: [General]
+
+- ret: Int64
+ args: [General, General]
+
+- ret: Int64
+ args: [Int32, Int32, Int32, Int32]
+
+- ret: Int64
+ args: [General, Int32]
+
+- ret: Int64
+ args: [General, Int64]
+
+- ret: Int64
+ args: [General, Int64, Int32]