s390x: Add z14 support
* Add support for processor features (including auto-detection). * Move base architecture set requirement back to z14. * Add z15 feature sets and re-enable z15-specific code generation when required features are available.
This commit is contained in:
44
cranelift/filetests/filetests/isa/s390x/bitops-arch13.clif
Normal file
44
cranelift/filetests/filetests/isa/s390x/bitops-arch13.clif
Normal file
@@ -0,0 +1,44 @@
|
||||
test compile
|
||||
target s390x arch13
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; POPCNT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %popcnt_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
v1 = popcnt v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: popcnt %r2, %r2, 8
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
v1 = popcnt v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: llgfr %r2, %r2
|
||||
; nextln: popcnt %r2, %r2, 8
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
v1 = popcnt v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: llghr %r2, %r2
|
||||
; nextln: popcnt %r2, %r2, 8
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i8(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
v1 = popcnt v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: popcnt %r2, %r2
|
||||
; nextln: br %r14
|
||||
@@ -210,7 +210,14 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: popcnt %r2, %r2, 8
|
||||
; check: popcnt %r2, %r2
|
||||
; nextln: sllg %r3, %r2, 32
|
||||
; nextln: agr %r2, %r3
|
||||
; nextln: sllg %r3, %r2, 16
|
||||
; nextln: agr %r2, %r3
|
||||
; nextln: sllg %r3, %r2, 8
|
||||
; nextln: agr %r2, %r3
|
||||
; nextln: srlg %r2, %r2, 56
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i32(i32) -> i32 {
|
||||
@@ -219,8 +226,12 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: llgfr %r2, %r2
|
||||
; nextln: popcnt %r2, %r2, 8
|
||||
; check: popcnt %r2, %r2
|
||||
; nextln: sllk %r3, %r2, 16
|
||||
; nextln: ar %r2, %r3
|
||||
; nextln: sllk %r3, %r2, 8
|
||||
; nextln: ar %r2, %r3
|
||||
; nextln: srlk %r2, %r2, 24
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i16(i16) -> i16 {
|
||||
@@ -229,8 +240,10 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: llghr %r2, %r2
|
||||
; nextln: popcnt %r2, %r2, 8
|
||||
; check: popcnt %r2, %r2
|
||||
; nextln: sllk %r3, %r2, 8
|
||||
; nextln: ar %r2, %r3
|
||||
; nextln: srlk %r2, %r2, 8
|
||||
; nextln: br %r14
|
||||
|
||||
function %popcnt_i8(i8) -> i8 {
|
||||
|
||||
212
cranelift/filetests/filetests/isa/s390x/bitwise-arch13.clif
Normal file
212
cranelift/filetests/filetests/isa/s390x/bitwise-arch13.clif
Normal file
@@ -0,0 +1,212 @@
|
||||
|
||||
test compile
|
||||
target s390x arch13
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; BAND_NOT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %band_not_i64(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
v2 = band_not.i64 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nngrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i32(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
v2 = band_not.i32 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i16(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
v2 = band_not.i16 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i8(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
v2 = band_not.i8 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; BOR_NOT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %bor_not_i64(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
v2 = bor_not.i64 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nogrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i32(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
v2 = bor_not.i32 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i16(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
v2 = bor_not.i16 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i8(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
v2 = bor_not.i8 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; BXOR_NOT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %bxor_not_i64(i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64):
|
||||
v2 = bxor_not.i64 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxgrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i32(i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32):
|
||||
v2 = bxor_not.i32 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i16(i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16):
|
||||
v2 = bxor_not.i16 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i8(i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8):
|
||||
v2 = bxor_not.i8 v0, v1
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; BNOT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %bnot_i64(i64) -> i64 {
|
||||
block0(v0: i64):
|
||||
v1 = bnot.i64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nogrk %r2, %r2, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i32(i32) -> i32 {
|
||||
block0(v0: i32):
|
||||
v1 = bnot.i32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i16(i16) -> i16 {
|
||||
block0(v0: i16):
|
||||
v1 = bnot.i16 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i8(i8) -> i8 {
|
||||
block0(v0: i8):
|
||||
v1 = bnot.i8 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
;; BITSELECT
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
|
||||
function %bitselect_i64(i64, i64, i64) -> i64 {
|
||||
block0(v0: i64, v1: i64, v2: i64):
|
||||
v3 = bitselect.i64 v0, v1, v2
|
||||
return v3
|
||||
}
|
||||
|
||||
; check: ngr %r3, %r2
|
||||
; nextln: nngrk %r2, %r4, %r2
|
||||
; nextln: ogr %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bitselect_i32(i32, i32, i32) -> i32 {
|
||||
block0(v0: i32, v1: i32, v2: i32):
|
||||
v3 = bitselect.i32 v0, v1, v2
|
||||
return v3
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bitselect_i16(i16, i16, i16) -> i16 {
|
||||
block0(v0: i16, v1: i16, v2: i16):
|
||||
v3 = bitselect.i16 v0, v1, v2
|
||||
return v3
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
function %bitselect_i8(i8, i8, i8) -> i8 {
|
||||
block0(v0: i8, v1: i8, v2: i8):
|
||||
v3 = bitselect.i8 v0, v1, v2
|
||||
return v3
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
@@ -290,7 +290,9 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nngrk %r2, %r2, %r3
|
||||
; check: ngr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: xihf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i32(i32, i32) -> i32 {
|
||||
@@ -299,7 +301,8 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; check: nr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i16(i16, i16) -> i16 {
|
||||
@@ -308,7 +311,8 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; check: nr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %band_not_i8(i8, i8) -> i8 {
|
||||
@@ -317,7 +321,8 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nnrk %r2, %r2, %r3
|
||||
; check: nr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -330,7 +335,9 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nogrk %r2, %r2, %r3
|
||||
; check: ogr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: xihf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i32(i32, i32) -> i32 {
|
||||
@@ -339,7 +346,8 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; check: or %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i16(i16, i16) -> i16 {
|
||||
@@ -348,7 +356,8 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; check: or %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bor_not_i8(i8, i8) -> i8 {
|
||||
@@ -357,7 +366,8 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r3
|
||||
; check: or %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -370,7 +380,9 @@ block0(v0: i64, v1: i64):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxgrk %r2, %r2, %r3
|
||||
; check: xgr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: xihf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i32(i32, i32) -> i32 {
|
||||
@@ -379,7 +391,8 @@ block0(v0: i32, v1: i32):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; check: xr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i16(i16, i16) -> i16 {
|
||||
@@ -388,7 +401,8 @@ block0(v0: i16, v1: i16):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; check: xr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bxor_not_i8(i8, i8) -> i8 {
|
||||
@@ -397,7 +411,8 @@ block0(v0: i8, v1: i8):
|
||||
return v2
|
||||
}
|
||||
|
||||
; check: nxrk %r2, %r2, %r3
|
||||
; check: xr %r2, %r3
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -410,7 +425,8 @@ block0(v0: i64):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nogrk %r2, %r2, %r2
|
||||
; check: xilf %r2, 4294967295
|
||||
; nextln: xihf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i32(i32) -> i32 {
|
||||
@@ -419,7 +435,7 @@ block0(v0: i32):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; check: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i16(i16) -> i16 {
|
||||
@@ -428,7 +444,7 @@ block0(v0: i16):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; check: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
function %bnot_i8(i8) -> i8 {
|
||||
@@ -437,7 +453,7 @@ block0(v0: i8):
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: nork %r2, %r2, %r2
|
||||
; check: xilf %r2, 4294967295
|
||||
; nextln: br %r14
|
||||
|
||||
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
||||
@@ -451,7 +467,9 @@ block0(v0: i64, v1: i64, v2: i64):
|
||||
}
|
||||
|
||||
; check: ngr %r3, %r2
|
||||
; nextln: nngrk %r2, %r4, %r2
|
||||
; nextln: ngrk %r2, %r4, %r2
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: xihf %r2, 4294967295
|
||||
; nextln: ogr %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
@@ -462,7 +480,8 @@ block0(v0: i32, v1: i32, v2: i32):
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: nrk %r2, %r4, %r2
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
@@ -473,7 +492,8 @@ block0(v0: i16, v1: i16, v2: i16):
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: nrk %r2, %r4, %r2
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
@@ -484,7 +504,8 @@ block0(v0: i8, v1: i8, v2: i8):
|
||||
}
|
||||
|
||||
; check: nr %r3, %r2
|
||||
; nextln: nnrk %r2, %r4, %r2
|
||||
; nextln: nrk %r2, %r4, %r2
|
||||
; nextln: xilf %r2, 4294967295
|
||||
; nextln: or %r2, %r3
|
||||
; nextln: br %r14
|
||||
|
||||
|
||||
39
cranelift/filetests/filetests/isa/s390x/fpmem-arch13.clif
Normal file
39
cranelift/filetests/filetests/isa/s390x/fpmem-arch13.clif
Normal file
@@ -0,0 +1,39 @@
|
||||
test compile
|
||||
target s390x arch13
|
||||
|
||||
function %load_f64_little(i64) -> f64 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f64 little v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: vlebrg %f0, 0(%r2), 0
|
||||
; nextln: br %r14
|
||||
|
||||
function %load_f32_little(i64) -> f32 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f32 little v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: vlebrf %f0, 0(%r2), 0
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f64_little(f64, i64) {
|
||||
block0(v0: f64, v1: i64):
|
||||
store.f64 little v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: vstebrg %f0, 0(%r2), 0
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f32_little(f32, i64) {
|
||||
block0(v0: f32, v1: i64):
|
||||
store.f32 little v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: vstebrf %f0, 0(%r2), 0
|
||||
; nextln: br %r14
|
||||
|
||||
81
cranelift/filetests/filetests/isa/s390x/fpmem.clif
Normal file
81
cranelift/filetests/filetests/isa/s390x/fpmem.clif
Normal file
@@ -0,0 +1,81 @@
|
||||
test compile
|
||||
target s390x
|
||||
|
||||
function %load_f64(i64) -> f64 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f64 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: ld %f0, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
function %load_f32(i64) -> f32 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f32 v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: le %f0, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
function %load_f64_little(i64) -> f64 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f64 little v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: lrvg %r2, 0(%r2)
|
||||
; nextln: ldgr %f0, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
function %load_f32_little(i64) -> f32 {
|
||||
block0(v0: i64):
|
||||
v1 = load.f32 little v0
|
||||
return v1
|
||||
}
|
||||
|
||||
; check: lrv %r2, 0(%r2)
|
||||
; nextln: sllg %r2, %r2, 32
|
||||
; nextln: ldgr %f0, %r2
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f64(f64, i64) {
|
||||
block0(v0: f64, v1: i64):
|
||||
store.f64 v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: std %f0, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f32(f32, i64) {
|
||||
block0(v0: f32, v1: i64):
|
||||
store.f32 v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: ste %f0, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f64_little(f64, i64) {
|
||||
block0(v0: f64, v1: i64):
|
||||
store.f64 little v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: lgdr %r3, %f0
|
||||
; nextln: strvg %r3, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
function %store_f32_little(f32, i64) {
|
||||
block0(v0: f32, v1: i64):
|
||||
store.f32 little v0, v1
|
||||
return
|
||||
}
|
||||
|
||||
; check: lgdr %r3, %f0
|
||||
; nextln: srlg %r3, %r3, 32
|
||||
; nextln: strv %r3, 0(%r2)
|
||||
; nextln: br %r14
|
||||
|
||||
Reference in New Issue
Block a user