Add a trapff instruction.
This is the floating point equivalent of trapif: Trap when a given condition is in the floating-point flags. Define Intel encodings comparable to the trapif encodings.
This commit is contained in:
@@ -381,6 +381,7 @@ is zero.
|
||||
.. autoinst:: trapz
|
||||
.. autoinst:: trapnz
|
||||
.. autoinst:: trapif
|
||||
.. autoinst:: trapff
|
||||
|
||||
|
||||
Function calls
|
||||
|
||||
@@ -470,6 +470,23 @@ ebb1:
|
||||
; asm: jbe ebb1
|
||||
brff ule v1, ebb1 ; bin: 76 f0
|
||||
|
||||
; asm: jp .+4; ud2
|
||||
trapff ord v1, user0 ; bin: 7a 02 0f 0b
|
||||
; asm: jnp .+4; ud2
|
||||
trapff uno v1, user0 ; bin: 7b 02 0f 0b
|
||||
; asm: je .+4; ud2
|
||||
trapff one v1, user0 ; bin: 74 02 0f 0b
|
||||
; asm: jne .+4; ud2
|
||||
trapff ueq v1, user0 ; bin: 75 02 0f 0b
|
||||
; asm: jna .+4; ud2
|
||||
trapff gt v1, user0 ; bin: 76 02 0f 0b
|
||||
; asm: jnae .+4; ud2
|
||||
trapff ge v1, user0 ; bin: 72 02 0f 0b
|
||||
; asm: jnb .+4; ud2
|
||||
trapff ult v1, user0 ; bin: 73 02 0f 0b
|
||||
; asm: jnbe .+4; ud2
|
||||
trapff ule v1, user0 ; bin: 77 02 0f 0b
|
||||
|
||||
; asm: setnp %bl
|
||||
[-,%rbx] v10 = trueff ord v1 ; bin: 0f 9b c3
|
||||
; asm: setp %bl
|
||||
|
||||
@@ -494,6 +494,23 @@ ebb1:
|
||||
; asm: jbe ebb1
|
||||
brff ule v1, ebb1 ; bin: 76 f0
|
||||
|
||||
; asm: jp .+4; ud2
|
||||
trapff ord v1, user0 ; bin: 7a 02 0f 0b
|
||||
; asm: jnp .+4; ud2
|
||||
trapff uno v1, user0 ; bin: 7b 02 0f 0b
|
||||
; asm: je .+4; ud2
|
||||
trapff one v1, user0 ; bin: 74 02 0f 0b
|
||||
; asm: jne .+4; ud2
|
||||
trapff ueq v1, user0 ; bin: 75 02 0f 0b
|
||||
; asm: jna .+4; ud2
|
||||
trapff gt v1, user0 ; bin: 76 02 0f 0b
|
||||
; asm: jnae .+4; ud2
|
||||
trapff ge v1, user0 ; bin: 72 02 0f 0b
|
||||
; asm: jnb .+4; ud2
|
||||
trapff ult v1, user0 ; bin: 73 02 0f 0b
|
||||
; asm: jnbe .+4; ud2
|
||||
trapff ule v1, user0 ; bin: 77 02 0f 0b
|
||||
|
||||
; asm: setnp %bl
|
||||
[-,%rbx] v10 = trueff ord v1 ; bin: 0f 9b c3
|
||||
; asm: setp %bl
|
||||
|
||||
@@ -216,6 +216,9 @@ ebb0(v0: i32):
|
||||
trapz v0, stk_ovf
|
||||
v1 = ifcmp_imm v0, 5
|
||||
trapif ugt v1, oob
|
||||
v2 = bitcast.f32 v1
|
||||
v3 = ffcmp v2, v2
|
||||
trapff uno v3, int_ovf
|
||||
return
|
||||
}
|
||||
; sameln: function %cond_traps(i32)
|
||||
@@ -223,5 +226,8 @@ ebb0(v0: i32):
|
||||
; nextln: trapz $v0, stk_ovf
|
||||
; nextln: $v1 = ifcmp_imm v0, 5
|
||||
; nextln: trapif ugt $v1, oob
|
||||
; nextln: $v2 = bitcast.f32 $v1
|
||||
; nextln: $v3 = ffcmp $v2, $v2
|
||||
; nextln: trapff uno $v3, int_ovf
|
||||
; nextln: return
|
||||
; nextln: }
|
||||
|
||||
Reference in New Issue
Block a user