[llvm] 2ca8c85 - [X86] is_fpclass.ll - add NDD test coverage

Simon Pilgrim via llvm-commits llvm-commits at lists.llvm.org
Tue Jun 11 03:23:29 PDT 2024


Author: Simon Pilgrim
Date: 2024-06-11T11:23:17+01:00
New Revision: 2ca8c856eeae739ec1e7242ee7e69f99ecf376d3

URL: https://github.com/llvm/llvm-project/commit/2ca8c856eeae739ec1e7242ee7e69f99ecf376d3
DIFF: https://github.com/llvm/llvm-project/commit/2ca8c856eeae739ec1e7242ee7e69f99ecf376d3.diff

LOG: [X86] is_fpclass.ll - add NDD test coverage

Added: 
    

Modified: 
    llvm/test/CodeGen/X86/is_fpclass.ll

Removed: 
    


################################################################################
diff  --git a/llvm/test/CodeGen/X86/is_fpclass.ll b/llvm/test/CodeGen/X86/is_fpclass.ll
index 2046d790cc57e..999be0f98b6fc 100644
--- a/llvm/test/CodeGen/X86/is_fpclass.ll
+++ b/llvm/test/CodeGen/X86/is_fpclass.ll
@@ -1,1336 +1,1414 @@
 ; NOTE: Assertions have been autogenerated by utils/update_llc_test_checks.py
-; RUN: llc < %s -mtriple=i686-linux | FileCheck %s -check-prefix=CHECK-32
-; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefix=CHECK-64
+; RUN: llc < %s -mtriple=i686-linux | FileCheck %s -check-prefixes=X86
+; RUN: llc < %s -mtriple=x86_64-linux | FileCheck %s -check-prefixes=X64,X64-GENERIC
+; RUN: llc < %s -mtriple=x86_64-linux -mattr=+ndd | FileCheck %s -check-prefixes=X64,X64-NDD
 
 define i1 @isnan_f(float %x) {
-; CHECK-32-LABEL: isnan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    ucomiss %xmm0, %xmm0
-; CHECK-64-NEXT:    setp %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    ucomiss %xmm0, %xmm0
+; X64-NEXT:    setp %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 3)  ; "nan"
   ret i1 %0
 }
 
 define i1 @isnot_nan_f(float %x) {
-; CHECK-32-LABEL: isnot_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setnp %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnot_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    ucomiss %xmm0, %xmm0
-; CHECK-64-NEXT:    setnp %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnot_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setnp %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnot_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    ucomiss %xmm0, %xmm0
+; X64-NEXT:    setnp %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1020)  ; 0x3fc = "zero|subnormal|normal|inf"
   ret i1 %0
 }
 
 define i1 @issignaling_f(float %x) {
-; CHECK-32-LABEL: issignaling_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issignaling_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issignaling_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setl %cl
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issignaling_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setl %cl
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1)  ; "snan"
   ret i1 %0
 }
 
 define i1 @not_issignaling_f(float %x) {
-; CHECK-32-LABEL: not_issignaling_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issignaling_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issignaling_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %cl
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setl %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issignaling_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %cl
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setl %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1022)  ; ~"snan"
   ret i1 %0
 }
 
 define i1 @isquiet_f(float %x) {
-; CHECK-32-LABEL: isquiet_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isquiet_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isquiet_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isquiet_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 2)  ; "qnan"
   ret i1 %0
 }
 
 define i1 @not_isquiet_f(float %x) {
-; CHECK-32-LABEL: not_isquiet_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isquiet_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isquiet_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isquiet_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setl %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1021)  ; ~"qnan"
   ret i1 %0
 }
 
 define i1 @isinf_f(float %x) {
-; CHECK-32-LABEL: isinf_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isinf_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isinf_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isinf_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; 0x204 = "inf"
   ret i1 %0
 }
 
 define i1 @not_isinf_f(float %x) {
-; CHECK-32-LABEL: not_isinf_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isinf_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isinf_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isinf_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 507)  ; ~0x204 = "~inf"
   ret i1 %0
 }
 
 define i1 @is_plus_inf_f(float %x) {
-; CHECK-32-LABEL: is_plus_inf_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_inf_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_inf_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_inf_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 512)  ; 0x200 = "+inf"
   ret i1 %0
 }
 
 define i1 @is_minus_inf_f(float %x) {
-; CHECK-32-LABEL: is_minus_inf_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_inf_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_inf_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_inf_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 4)  ; "-inf"
   ret i1 %0
 }
 
 define i1 @not_is_minus_inf_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_inf_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_inf_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_inf_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $-8388608, {{[0-9]+}}(%esp) # imm = 0xFF800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_minus_inf_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1019)  ; ~"-inf"
   ret i1 %0
 }
 
 define i1 @isfinite_f(float %x) {
-; CHECK-32-LABEL: isfinite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isfinite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isfinite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isfinite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; 0x1f8 = "finite"
   ret i1 %0
 }
 
 define i1 @not_isfinite_f(float %x) {
-; CHECK-32-LABEL: not_isfinite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isfinite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isfinite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isfinite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519)  ; ~0x1f8 = "~finite"
   ret i1 %0
 }
 
 define i1 @is_plus_finite_f(float %x) {
-; CHECK-32-LABEL: is_plus_finite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_finite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_finite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_finite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 448)  ; 0x1c0 = "+finite"
   ret i1 %0
 }
 
 define i1 @not_is_plus_finite_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_finite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_finite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_finite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_plus_finite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 575)  ; ~0x1c0 = ~"+finite"
   ret i1 %0
 }
 
 define i1 @is_minus_finite_f(float %x) {
-; CHECK-32-LABEL: is_minus_finite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sets %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_finite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sets %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_finite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sets %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_finite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sets %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 56)  ; 0x38 = "-finite"
   ret i1 %0
 }
 
 define i1 @not_is_minus_finite_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_finite_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    setns %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_finite_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setns %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_finite_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    setns %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_minus_finite_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setns %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 967)  ; ~0x38 = ~"-finite"
   ret i1 %0
 }
 
 define i1 @isnormal_f(float %x) #1 {
-; CHECK-32-LABEL: isnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 264)  ; 0x108 = "normal"
   ret i1 %0
 }
 
 define i1 @not_isnormal_f(float %x) #1 {
-; CHECK-32-LABEL: not_isnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 759)  ; ~0x108 = "~normal"
   ret i1 %0
 }
 
 define i1 @is_plus_normal_f(float %x) {
-; CHECK-32-LABEL: is_plus_normal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    setns %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_normal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setns %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_normal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    setns %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_normal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setns %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NEXT:    setb %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 256)  ; 0x100 = "+normal"
   ret i1 %0
 }
 
 define i1 @issubnormal_f(float %x) {
-; CHECK-32-LABEL: issubnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"
   ret i1 %0
 }
 
 define i1 @issubnormal_f_daz(float %x) #0 {
-; CHECK-32-LABEL: issubnormal_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"
   ret i1 %0
 }
 
 define i1 @issubnormal_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: issubnormal_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 144)  ; 0x90 = "subnormal"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 879)  ; ~0x90 = "~subnormal"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_f_daz(float %x) #0 {
-; CHECK-32-LABEL: not_issubnormal_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 879)  ; ~0x90 = "~subnormal"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: not_issubnormal_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 879)  ; ~0x90 = "~subnormal"
   ret i1 %0
 }
 
 define i1 @is_plus_subnormal_f(float %x) {
-; CHECK-32-LABEL: is_plus_subnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_subnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_subnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_subnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 128)  ; 0x80 = "+subnormal"
   ret i1 %0
 }
 
 define i1 @not_is_plus_subnormal_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_subnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_subnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_subnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setae %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_plus_subnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setae %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 895)  ; ~0x80 = ~"+subnormal"
   ret i1 %0
 }
 
 define i1 @is_minus_subnormal_f(float %x) {
-; CHECK-32-LABEL: is_minus_subnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sets %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_subnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sets %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_subnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sets %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_subnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sets %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 16)  ; 0x10 = "-subnormal"
   ret i1 %0
 }
 
 define i1 @not_is_minus_subnormal_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_subnormal_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    setns %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setae %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_subnormal_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setns %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setae %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_subnormal_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    setns %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setae %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_minus_subnormal_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setns %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setae %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1007)  ; ~0x10 = ~"-subnormal"
   ret i1 %0
 }
 
 define i1 @iszero_f(float %x) {
-; CHECK-32-LABEL: iszero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"
   ret i1 %0
 }
 
 define i1 @iszero_f_daz(float %x) #0 {
-; CHECK-32-LABEL: iszero_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"
   ret i1 %0
 }
 
 define i1 @iszero_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: iszero_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 96)  ; 0x60 = "zero"
   ret i1 %0
 }
 
 define i1 @not_iszero_f(float %x) {
-; CHECK-32-LABEL: not_iszero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 927)  ; ~0x60 = "~zero"
   ret i1 %0
 }
 
 define i1 @not_iszero_f_daz(float %x) #0 {
-; CHECK-32-LABEL: not_iszero_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 927)  ; ~0x60 = "~zero"
   ret i1 %0
 }
 
 define i1 @not_iszero_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: not_iszero_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 927)  ; ~0x60 = "~zero"
   ret i1 %0
 }
 
 define i1 @issubnormal_or_zero_f(float %x) {
-; CHECK-32-LABEL: issubnormal_or_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 240)  ; 0xf0 = "subnormal|zero"
   ret i1 %0
 }
 
 define i1 @issubnormal_or_zero_f_daz(float %x) #0 {
-; CHECK-32-LABEL: issubnormal_or_zero_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 240)  ; 0xf0 = "subnormal|zero"
   ret i1 %0
 }
 
 define i1 @issubnormal_or_zero_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: issubnormal_or_zero_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 240)  ; 0xf0 = "subnormal|zero"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_or_zero_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_or_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_or_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 783)  ; ~0xf0 = "~(subnormal|zero)"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_or_zero_f_daz(float %x) #0 {
-; CHECK-32-LABEL: not_issubnormal_or_zero_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_or_zero_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 783)  ; ~0xf0 = "~(subnormal|zero)"
   ret i1 %0
 }
 
 define i1 @not_issubnormal_or_zero_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: not_issubnormal_or_zero_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2139095040, {{[0-9]+}}(%esp) # imm = 0x7F800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_or_zero_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 783)  ; ~0xf0 = "~(subnormal|zero)"
   ret i1 %0
 }
 
 define i1 @is_plus_zero_f(float %x) {
-; CHECK-32-LABEL: is_plus_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $0, {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $0, {{[0-9]+}}(%esp)
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 64)  ; 0x40 = "+zero"
   ret i1 %0
 }
 
 define i1 @not_is_plus_zero_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $0, {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $0, {{[0-9]+}}(%esp)
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_plus_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 959)  ; ~0x40 = ~"+zero"
   ret i1 %0
 }
 
 define i1 @is_minus_zero_f(float %x) {
-; CHECK-32-LABEL: is_minus_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $-2147483648, {{[0-9]+}}(%esp) # imm = 0x80000000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-2147483648, %eax # imm = 0x80000000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $-2147483648, {{[0-9]+}}(%esp) # imm = 0x80000000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-2147483648, %eax # imm = 0x80000000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 32)  ; 0x20 = "-zero"
   ret i1 %0
 }
 
 define i1 @not_is_minus_zero_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_zero_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    cmpl $-2147483648, {{[0-9]+}}(%esp) # imm = 0x80000000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_zero_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-2147483648, %eax # imm = 0x80000000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_zero_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    cmpl $-2147483648, {{[0-9]+}}(%esp) # imm = 0x80000000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_minus_zero_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-2147483648, %eax # imm = 0x80000000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 991)  ; ~0x20 = ~"-zero"
   ret i1 %0
 }
 
 define i1 @isnan_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: isnan_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 3) strictfp ; "nan"
   ret i1 %0
 }
 
 define i1 @not_isnan_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: not_isnan_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isnan_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isnan_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isnan_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setl %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1020) strictfp ; ~"nan"
   ret i1 %0
 }
 
 define i1 @isfinite_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: isfinite_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isfinite_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isfinite_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isfinite_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504) strictfp ; 0x1f8 = "finite"
   ret i1 %0
 }
 
 define i1 @not_isfinite_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: not_isfinite_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isfinite_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isfinite_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isfinite_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519) strictfp ; ~0x1f8 = ~"finite"
   ret i1 %0
 }
 
 define i1 @iszero_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: iszero_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 96) strictfp ; 0x60 = "zero"
   ret i1 %0
 }
 
 define i1 @not_iszero_f_strictfp(float %x) strictfp {
-; CHECK-32-LABEL: not_iszero_f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    testl $2147483647, {{[0-9]+}}(%esp) # imm = 0x7FFFFFFF
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 927) strictfp ; ~0x60 = ~"zero"
   ret i1 %0
 }
 
 define i1 @isnan_d(double %x) {
-; CHECK-32-LABEL: isnan_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    fldl {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    ucomisd %xmm0, %xmm0
-; CHECK-64-NEXT:    setp %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    fldl {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_d:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    ucomisd %xmm0, %xmm0
+; X64-NEXT:    setp %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 3)  ; "nan"
   ret i1 %0
 }
 
 define i1 @isinf_d(double %x) {
-; CHECK-32-LABEL: isinf_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    xorl $2146435072, %eax # imm = 0x7FF00000
-; CHECK-32-NEXT:    orl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isinf_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isinf_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    xorl $2146435072, %eax # imm = 0x7FF00000
+; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: isinf_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    sete %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: isinf_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $9218868437227405312, %rcx # imm = 0x7FF0000000000000
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 516)  ; 0x204 = "inf"
   ret i1 %0
 }
 
 define i1 @isfinite_d(double %x) {
-; CHECK-32-LABEL: isfinite_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2146435072, %eax # imm = 0x7FF00000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isfinite_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isfinite_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2146435072, %eax # imm = 0x7FF00000
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: isfinite_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setl %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: isfinite_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $9218868437227405312, %rcx # imm = 0x7FF0000000000000
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    setl %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 504)  ; 0x1f8 = "finite"
   ret i1 %0
 }
 
 define i1 @isnormal_d(double %x) {
-; CHECK-32-LABEL: isnormal_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    addl $-1048576, %eax # imm = 0xFFF00000
-; CHECK-32-NEXT:    shrl $21, %eax
-; CHECK-32-NEXT:    cmpl $1023, %eax # imm = 0x3FF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnormal_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $-4503599627370496, %rax # imm = 0xFFF0000000000000
-; CHECK-64-NEXT:    addq %rcx, %rax
-; CHECK-64-NEXT:    shrq $53, %rax
-; CHECK-64-NEXT:    cmpl $1023, %eax # imm = 0x3FF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnormal_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    addl $-1048576, %eax # imm = 0xFFF00000
+; X86-NEXT:    shrl $21, %eax
+; X86-NEXT:    cmpl $1023, %eax # imm = 0x3FF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: isnormal_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $-4503599627370496, %rax # imm = 0xFFF0000000000000
+; X64-GENERIC-NEXT:    addq %rcx, %rax
+; X64-GENERIC-NEXT:    shrq $53, %rax
+; X64-GENERIC-NEXT:    cmpl $1023, %eax # imm = 0x3FF
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: isnormal_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $-4503599627370496, %rcx # imm = 0xFFF0000000000000
+; X64-NDD-NEXT:    addq %rcx, %rax
+; X64-NDD-NEXT:    shrq $53, %rax
+; X64-NDD-NEXT:    cmpl $1023, %eax # imm = 0x3FF
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 264)  ; 0x108 = "normal"
   ret i1 %0
 }
 
 define i1 @issubnormal_d(double %x) {
-; CHECK-32-LABEL: issubnormal_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    addl $-1, %eax
-; CHECK-32-NEXT:    adcl $-1, %ecx
-; CHECK-32-NEXT:    cmpl $-1, %eax
-; CHECK-32-NEXT:    sbbl $1048575, %ecx # imm = 0xFFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    decq %rcx
-; CHECK-64-NEXT:    movabsq $4503599627370495, %rax # imm = 0xFFFFFFFFFFFFF
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    addl $-1, %eax
+; X86-NEXT:    adcl $-1, %ecx
+; X86-NEXT:    cmpl $-1, %eax
+; X86-NEXT:    sbbl $1048575, %ecx # imm = 0xFFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: issubnormal_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    decq %rcx
+; X64-GENERIC-NEXT:    movabsq $4503599627370495, %rax # imm = 0xFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: issubnormal_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    decq %rax
+; X64-NDD-NEXT:    movabsq $4503599627370495, %rcx # imm = 0xFFFFFFFFFFFFF
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 144)  ; 0x90 = "subnormal"
   ret i1 %0
 }
 
 define i1 @iszero_d(double %x) {
-; CHECK-32-LABEL: iszero_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    orl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    shlq %rax
-; CHECK-64-NEXT:    testq %rax, %rax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_d:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movq %xmm0, %rax
+; X64-NEXT:    shlq %rax
+; X64-NEXT:    testq %rax, %rax
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 96)  ; 0x60 = "zero"
   ret i1 %0
 }
 
 define i1 @issignaling_d(double %x) {
-; CHECK-32-LABEL: issignaling_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    xorl %ecx, %ecx
-; CHECK-32-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    movl $2146435072, %ecx # imm = 0x7FF00000
-; CHECK-32-NEXT:    sbbl %eax, %ecx
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    cmpl $2146959360, %eax # imm = 0x7FF80000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issignaling_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $9221120237041090560, %rax # imm = 0x7FF8000000000000
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setg %al
-; CHECK-64-NEXT:    andb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issignaling_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    xorl %ecx, %ecx
+; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    movl $2146435072, %ecx # imm = 0x7FF00000
+; X86-NEXT:    sbbl %eax, %ecx
+; X86-NEXT:    setl %cl
+; X86-NEXT:    cmpl $2146959360, %eax # imm = 0x7FF80000
+; X86-NEXT:    setl %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: issignaling_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $9221120237041090560, %rax # imm = 0x7FF8000000000000
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setg %al
+; X64-GENERIC-NEXT:    andb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: issignaling_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $9221120237041090560, %rcx # imm = 0x7FF8000000000000
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    movabsq $9218868437227405312, %rdx # imm = 0x7FF0000000000000
+; X64-NDD-NEXT:    cmpq %rdx, %rax
+; X64-NDD-NEXT:    setg %al
+; X64-NDD-NEXT:    andb %cl, %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 1)  ; "snan"
   ret i1 %0
 }
 
 define i1 @isquiet_d(double %x) {
-; CHECK-32-LABEL: isquiet_d:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2146959360, %eax # imm = 0x7FF80000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isquiet_d:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $9221120237041090559, %rax # imm = 0x7FF7FFFFFFFFFFFF
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setg %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isquiet_d:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2146959360, %eax # imm = 0x7FF80000
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: isquiet_d:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $9221120237041090559, %rax # imm = 0x7FF7FFFFFFFFFFFF
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setg %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: isquiet_d:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $9221120237041090559, %rcx # imm = 0x7FF7FFFFFFFFFFFF
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    setg %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 2)  ; "qnan"
   ret i1 %0
 }
 
 define i1 @isnan_d_strictfp(double %x) strictfp {
-; CHECK-32-LABEL: isnan_d_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    xorl %ecx, %ecx
-; CHECK-32-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    movl $2146435072, %ecx # imm = 0x7FF00000
-; CHECK-32-NEXT:    sbbl %eax, %ecx
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_d_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
-; CHECK-64-NEXT:    andq %rax, %rcx
-; CHECK-64-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
-; CHECK-64-NEXT:    cmpq %rax, %rcx
-; CHECK-64-NEXT:    setg %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_d_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    xorl %ecx, %ecx
+; X86-NEXT:    cmpl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    movl $2146435072, %ecx # imm = 0x7FF00000
+; X86-NEXT:    sbbl %eax, %ecx
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: isnan_d_strictfp:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movq %xmm0, %rax
+; X64-GENERIC-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-GENERIC-NEXT:    andq %rax, %rcx
+; X64-GENERIC-NEXT:    movabsq $9218868437227405312, %rax # imm = 0x7FF0000000000000
+; X64-GENERIC-NEXT:    cmpq %rax, %rcx
+; X64-GENERIC-NEXT:    setg %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: isnan_d_strictfp:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movq %xmm0, %rax
+; X64-NDD-NEXT:    movabsq $9223372036854775807, %rcx # imm = 0x7FFFFFFFFFFFFFFF
+; X64-NDD-NEXT:    andq %rcx, %rax
+; X64-NDD-NEXT:    movabsq $9218868437227405312, %rcx # imm = 0x7FF0000000000000
+; X64-NDD-NEXT:    cmpq %rcx, %rax
+; X64-NDD-NEXT:    setg %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 3) strictfp ; "nan"
   ret i1 %0
 }
 
 define i1 @iszero_d_strictfp(double %x) strictfp {
-; CHECK-32-LABEL: iszero_d_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    orl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_d_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movq %xmm0, %rax
-; CHECK-64-NEXT:    shlq %rax
-; CHECK-64-NEXT:    testq %rax, %rax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_d_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    orl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_d_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movq %xmm0, %rax
+; X64-NEXT:    shlq %rax
+; X64-NEXT:    testq %rax, %rax
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f64(double %x, i32 96) strictfp ; 0x60 = "zero"
   ret i1 %0
@@ -1339,70 +1417,70 @@ entry:
 
 
 define <1 x i1> @isnan_v1f(<1 x float> %x) {
-; CHECK-32-LABEL: isnan_v1f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_v1f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    ucomiss %xmm0, %xmm0
-; CHECK-64-NEXT:    setp %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v1f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_v1f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    ucomiss %xmm0, %xmm0
+; X64-NEXT:    setp %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call <1 x i1> @llvm.is.fpclass.v1f32(<1 x float> %x, i32 3)  ; "nan"
   ret <1 x i1> %0
 }
 
 define <1 x i1> @isnan_v1f_strictfp(<1 x float> %x) strictfp {
-; CHECK-32-LABEL: isnan_v1f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_v1f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v1f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_v1f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call <1 x i1> @llvm.is.fpclass.v1f32(<1 x float> %x, i32 3) strictfp ; "nan"
   ret <1 x i1> %0
 }
 
 define <2 x i1> @isnan_v2f(<2 x float> %x) {
-; CHECK-32-LABEL: isnan_v2f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %cl
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %dl
-; CHECK-32-NEXT:    movl %ecx, %eax
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_v2f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    cmpunordps %xmm0, %xmm0
-; CHECK-64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v2f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %cl
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %dl
+; X86-NEXT:    movl %ecx, %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_v2f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    cmpunordps %xmm0, %xmm0
+; X64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
+; X64-NEXT:    retq
 entry:
   %0 = tail call <2 x i1> @llvm.is.fpclass.v2f32(<2 x float> %x, i32 3)  ; "nan"
   ret <2 x i1> %0
@@ -1410,173 +1488,173 @@ entry:
 
 
 define <2 x i1> @isnot_nan_v2f(<2 x float> %x) {
-; CHECK-32-LABEL: isnot_nan_v2f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setnp %cl
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setnp %dl
-; CHECK-32-NEXT:    movl %ecx, %eax
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnot_nan_v2f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    cmpordps %xmm0, %xmm0
-; CHECK-64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnot_nan_v2f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setnp %cl
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setnp %dl
+; X86-NEXT:    movl %ecx, %eax
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnot_nan_v2f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    cmpordps %xmm0, %xmm0
+; X64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
+; X64-NEXT:    retq
 entry:
   %0 = tail call <2 x i1> @llvm.is.fpclass.v2f32(<2 x float> %x, i32 1020)  ; 0x3fc = "zero|subnormal|normal|inf"
   ret <2 x i1> %0
 }
 
 define <2 x i1> @isnan_v2f_strictfp(<2 x float> %x) strictfp {
-; CHECK-32-LABEL: isnan_v2f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    andl %ecx, %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dl
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isnan_v2f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
-; CHECK-64-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
-; CHECK-64-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v2f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    andl %ecx, %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %dl
+; X86-NEXT:    retl
+;
+; X64-LABEL: isnan_v2f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    shufps {{.*#+}} xmm0 = xmm0[0,1,1,3]
+; X64-NEXT:    andps {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
+; X64-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
+; X64-NEXT:    retq
 entry:
   %0 = tail call <2 x i1> @llvm.is.fpclass.v2f32(<2 x float> %x, i32 3) strictfp ; "nan"
   ret <2 x i1> %0
 }
 
 define <4 x i1> @isnan_v4f(<4 x float> %x) {
-; CHECK-32-LABEL: isnan_v4f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %dh
-; CHECK-32-NEXT:    shlb $2, %dh
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %dl
-; CHECK-32-NEXT:    shlb $3, %dl
-; CHECK-32-NEXT:    orb %dh, %dl
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %dh
-; CHECK-32-NEXT:    fucomp %st(0)
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setp %al
-; CHECK-32-NEXT:    addb %al, %al
-; CHECK-32-NEXT:    orb %dh, %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    movb %al, (%ecx)
-; CHECK-32-NEXT:    movl %ecx, %eax
-; CHECK-32-NEXT:    retl $4
-;
-; CHECK-64-LABEL: isnan_v4f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    cmpunordps %xmm0, %xmm0
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v4f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %dh
+; X86-NEXT:    shlb $2, %dh
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %dl
+; X86-NEXT:    shlb $3, %dl
+; X86-NEXT:    orb %dh, %dl
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %dh
+; X86-NEXT:    fucomp %st(0)
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setp %al
+; X86-NEXT:    addb %al, %al
+; X86-NEXT:    orb %dh, %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    movb %al, (%ecx)
+; X86-NEXT:    movl %ecx, %eax
+; X86-NEXT:    retl $4
+;
+; X64-LABEL: isnan_v4f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    cmpunordps %xmm0, %xmm0
+; X64-NEXT:    retq
 entry:
   %0 = tail call <4 x i1> @llvm.is.fpclass.v4f32(<4 x float> %x, i32 3)  ; "nan"
   ret <4 x i1> %0
 }
 
 define <4 x i1> @isnan_v4f_strictfp(<4 x float> %x) strictfp {
-; CHECK-32-LABEL: isnan_v4f_strictfp:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    pushl %esi
-; CHECK-32-NEXT:    .cfi_def_cfa_offset 8
-; CHECK-32-NEXT:    .cfi_offset %esi, -8
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %edx
-; CHECK-32-NEXT:    andl %ecx, %edx
-; CHECK-32-NEXT:    cmpl $2139095041, %edx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dh
-; CHECK-32-NEXT:    shlb $2, %dh
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %esi
-; CHECK-32-NEXT:    andl %ecx, %esi
-; CHECK-32-NEXT:    cmpl $2139095041, %esi # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dl
-; CHECK-32-NEXT:    shlb $3, %dl
-; CHECK-32-NEXT:    orb %dh, %dl
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %esi
-; CHECK-32-NEXT:    andl %ecx, %esi
-; CHECK-32-NEXT:    cmpl $2139095041, %esi # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dh
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %ecx
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    addb %cl, %cl
-; CHECK-32-NEXT:    orb %dh, %cl
-; CHECK-32-NEXT:    orb %dl, %cl
-; CHECK-32-NEXT:    movb %cl, (%eax)
-; CHECK-32-NEXT:    popl %esi
-; CHECK-32-NEXT:    .cfi_def_cfa_offset 4
-; CHECK-32-NEXT:    retl $4
-;
-; CHECK-64-LABEL: isnan_v4f_strictfp:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
-; CHECK-64-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isnan_v4f_strictfp:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    pushl %esi
+; X86-NEXT:    .cfi_def_cfa_offset 8
+; X86-NEXT:    .cfi_offset %esi, -8
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %edx
+; X86-NEXT:    andl %ecx, %edx
+; X86-NEXT:    cmpl $2139095041, %edx # imm = 0x7F800001
+; X86-NEXT:    setge %dh
+; X86-NEXT:    shlb $2, %dh
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
+; X86-NEXT:    andl %ecx, %esi
+; X86-NEXT:    cmpl $2139095041, %esi # imm = 0x7F800001
+; X86-NEXT:    setge %dl
+; X86-NEXT:    shlb $3, %dl
+; X86-NEXT:    orb %dh, %dl
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %esi
+; X86-NEXT:    andl %ecx, %esi
+; X86-NEXT:    cmpl $2139095041, %esi # imm = 0x7F800001
+; X86-NEXT:    setge %dh
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %ecx
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    addb %cl, %cl
+; X86-NEXT:    orb %dh, %cl
+; X86-NEXT:    orb %dl, %cl
+; X86-NEXT:    movb %cl, (%eax)
+; X86-NEXT:    popl %esi
+; X86-NEXT:    .cfi_def_cfa_offset 4
+; X86-NEXT:    retl $4
+;
+; X64-LABEL: isnan_v4f_strictfp:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    pand {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
+; X64-NEXT:    pcmpgtd {{\.?LCPI[0-9]+_[0-9]+}}(%rip), %xmm0
+; X64-NEXT:    retq
 entry:
   %0 = tail call <4 x i1> @llvm.is.fpclass.v4f32(<4 x float> %x, i32 3) strictfp ; "nan"
   ret <4 x i1> %0
 }
 
 define i1 @isnone_f(float %x) {
-; CHECK-32-LABEL: isnone_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    xorl %eax, %eax
-; CHECK-32-NEXT:    retl
+; X86-LABEL: isnone_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    xorl %eax, %eax
+; X86-NEXT:    retl
 ;
-; CHECK-64-LABEL: isnone_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    xorl %eax, %eax
-; CHECK-64-NEXT:    retq
+; X64-LABEL: isnone_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    xorl %eax, %eax
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 0)
   ret i1 %0
 }
 
 define i1 @isany_f(float %x) {
-; CHECK-32-LABEL: isany_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movb $1, %al
-; CHECK-32-NEXT:    retl
+; X86-LABEL: isany_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movb $1, %al
+; X86-NEXT:    retl
 ;
-; CHECK-64-LABEL: isany_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movb $1, %al
-; CHECK-64-NEXT:    retq
+; X64-LABEL: isany_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movb $1, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1023)
   ret i1 %0
@@ -1584,1056 +1662,1263 @@ entry:
 
 
 define i1 @iszero_or_nan_f(float %x) {
-; CHECK-32-LABEL: iszero_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fldz
-; CHECK-32-NEXT:    fucompp
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    xorps %xmm1, %xmm1
-; CHECK-64-NEXT:    ucomiss %xmm1, %xmm0
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fldz
+; X86-NEXT:    fucompp
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    xorps %xmm1, %xmm1
+; X64-NEXT:    ucomiss %xmm1, %xmm0
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 99)  ; 0x60|0x3 = "zero|nan"
   ret i1 %0
 }
 
 define i1 @iszero_or_nan_f_daz(float %x) #0 {
-; CHECK-32-LABEL: iszero_or_nan_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_or_nan_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_or_nan_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_or_nan_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %cl
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sete %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 99)  ; 0x60|0x3 = "zero|nan"
   ret i1 %0
 }
 
 define i1 @iszero_or_nan_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: iszero_or_nan_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_or_nan_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_or_nan_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_or_nan_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %cl
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sete %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 99)  ; 0x60|0x3 = "zero|nan"
   ret i1 %0
 }
 
 define i1 @not_iszero_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_iszero_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fldz
-; CHECK-32-NEXT:    fucompp
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    xorps %xmm1, %xmm1
-; CHECK-64-NEXT:    ucomiss %xmm1, %xmm0
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fldz
+; X86-NEXT:    fucompp
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    xorps %xmm1, %xmm1
+; X64-NEXT:    ucomiss %xmm1, %xmm0
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 924)  ; ~0x60 = "~(zero|nan)"
   ret i1 %0
 }
 
 define i1 @not_iszero_or_nan_f_daz(float %x) #0 {
-; CHECK-32-LABEL: not_iszero_or_nan_f_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_or_nan_f_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_or_nan_f_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setl %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    setne %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_or_nan_f_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setl %cl
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setne %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 924)  ; ~(0x60|0x3) = "~(zero|nan)"
   ret i1 %0
 }
 
 define i1 @not_iszero_or_nan_f_maybe_daz(float %x) #1 {
-; CHECK-32-LABEL: not_iszero_or_nan_f_maybe_daz:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_or_nan_f_maybe_daz:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_or_nan_f_maybe_daz:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setl %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    setne %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_iszero_or_nan_f_maybe_daz:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setl %cl
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    setne %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 924)  ; ~(0x60|0x3) = "~(zero|nan)"
   ret i1 %0
 }
 
 define i1 @iszero_or_qnan_f(float %x) {
-; CHECK-32-LABEL: iszero_or_qnan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_or_qnan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_or_qnan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: iszero_or_qnan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %cl
+; X64-NEXT:    testl %eax, %eax
+; X64-NEXT:    sete %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 98)  ; 0x60|0x2 = "zero|qnan"
   ret i1 %0
 }
 
 define i1 @iszero_or_snan_f(float %x) {
-; CHECK-32-LABEL: iszero_or_snan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dl
-; CHECK-32-NEXT:    andb %cl, %dl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: iszero_or_snan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %dl
-; CHECK-64-NEXT:    andb %cl, %dl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: iszero_or_snan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setl %cl
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %dl
+; X86-NEXT:    andb %cl, %dl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: iszero_or_snan_f:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %cl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %dl
+; X64-GENERIC-NEXT:    andb %cl, %dl
+; X64-GENERIC-NEXT:    testl %eax, %eax
+; X64-GENERIC-NEXT:    sete %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: iszero_or_snan_f:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %dl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    testl %eax, %eax
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 97)  ; 0x60|0x1 = "zero|snan"
   ret i1 %0
 }
 
 define i1 @not_iszero_or_qnan_f(float %x) {
-; CHECK-32-LABEL: not_iszero_or_qnan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    pushl %esi
-; CHECK-32-NEXT:    .cfi_def_cfa_offset 8
-; CHECK-32-NEXT:    .cfi_offset %esi, -8
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dl
-; CHECK-32-NEXT:    andb %cl, %dl
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    leal -1(%eax), %esi
-; CHECK-32-NEXT:    cmpl $8388607, %esi # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %ch
-; CHECK-32-NEXT:    orb %cl, %ch
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    orb %ch, %al
-; CHECK-32-NEXT:    popl %esi
-; CHECK-32-NEXT:    .cfi_def_cfa_offset 4
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_or_qnan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %dl
-; CHECK-64-NEXT:    andb %cl, %dl
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    leal -1(%rax), %esi
-; CHECK-64-NEXT:    cmpl $8388607, %esi # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %sil
-; CHECK-64-NEXT:    orb %cl, %sil
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    orb %sil, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_or_qnan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    pushl %esi
+; X86-NEXT:    .cfi_def_cfa_offset 8
+; X86-NEXT:    .cfi_offset %esi, -8
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setl %cl
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %dl
+; X86-NEXT:    andb %cl, %dl
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    leal -1(%eax), %esi
+; X86-NEXT:    cmpl $8388607, %esi # imm = 0x7FFFFF
+; X86-NEXT:    setb %ch
+; X86-NEXT:    orb %cl, %ch
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    orb %ch, %al
+; X86-NEXT:    popl %esi
+; X86-NEXT:    .cfi_def_cfa_offset 4
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_iszero_or_qnan_f:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %cl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %dl
+; X64-GENERIC-NEXT:    andb %cl, %dl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    leal -1(%rax), %esi
+; X64-GENERIC-NEXT:    cmpl $8388607, %esi # imm = 0x7FFFFF
+; X64-GENERIC-NEXT:    setb %sil
+; X64-GENERIC-NEXT:    orb %cl, %sil
+; X64-GENERIC-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    orb %sil, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_iszero_or_qnan_f:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %dl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %dl
+; X64-NDD-NEXT:    decl %eax, %esi
+; X64-NDD-NEXT:    cmpl $8388607, %esi # imm = 0x7FFFFF
+; X64-NDD-NEXT:    setb %sil
+; X64-NDD-NEXT:    orb %sil, %dl
+; X64-NDD-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    orb %dl, %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 925)  ; ~(0x60|0x2) = "~(zero|qnan)"
   ret i1 %0
 }
 
 define i1 @not_iszero_or_snan_f(float %x) {
-; CHECK-32-LABEL: not_iszero_or_snan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    leal -1(%eax), %edx
-; CHECK-32-NEXT:    cmpl $8388607, %edx # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %dl
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %ch
-; CHECK-32-NEXT:    orb %cl, %ch
-; CHECK-32-NEXT:    orb %dl, %ch
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %ch, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_iszero_or_snan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    leal -1(%rax), %edx
-; CHECK-64-NEXT:    cmpl $8388607, %edx # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %dl
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %sil
-; CHECK-64-NEXT:    orb %cl, %sil
-; CHECK-64-NEXT:    orb %dl, %sil
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %sil, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_iszero_or_snan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    leal -1(%eax), %edx
+; X86-NEXT:    cmpl $8388607, %edx # imm = 0x7FFFFF
+; X86-NEXT:    setb %dl
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %ch
+; X86-NEXT:    orb %cl, %ch
+; X86-NEXT:    orb %dl, %ch
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %ch, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_iszero_or_snan_f:
+; X64-GENERIC:       # %bb.0: # %entry
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    leal -1(%rax), %edx
+; X64-GENERIC-NEXT:    cmpl $8388607, %edx # imm = 0x7FFFFF
+; X64-GENERIC-NEXT:    setb %dl
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setge %sil
+; X64-GENERIC-NEXT:    orb %cl, %sil
+; X64-GENERIC-NEXT:    orb %dl, %sil
+; X64-GENERIC-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    orb %sil, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_iszero_or_snan_f:
+; X64-NDD:       # %bb.0: # %entry
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %cl
+; X64-NDD-NEXT:    decl %eax, %edx
+; X64-NDD-NEXT:    cmpl $8388607, %edx # imm = 0x7FFFFF
+; X64-NDD-NEXT:    setb %dl
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setge %sil
+; X64-NDD-NEXT:    orb %sil, %cl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 926)  ; ~(0x60|0x1) = "~(zero|snan)"
   ret i1 %0
 }
 
 define i1 @isinf_or_nan_f(float %x) {
-; CHECK-32-LABEL: isinf_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isinf_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isinf_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setge %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isinf_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setge %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 519)  ; 0x204|0x3 = "inf|nan"
   ret i1 %0
 }
 
 define i1 @not_isinf_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_isinf_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isinf_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isinf_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isinf_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 504)  ; ~(0x204|0x3) = "~(inf|nan)"
   ret i1 %0
 }
 
 define i1 @isfinite_or_nan_f(float %x) {
-; CHECK-32-LABEL: isfinite_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: isfinite_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: isfinite_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: isfinite_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 507)  ; 0x1f8|0x3 = "finite|nan"
   ret i1 %0
 }
 
 define i1 @not_isfinite_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_isfinite_or_nan_f:
-; CHECK-32:       # %bb.0: # %entry
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_isfinite_or_nan_f:
-; CHECK-64:       # %bb.0: # %entry
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_isfinite_or_nan_f:
+; X86:       # %bb.0: # %entry
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_isfinite_or_nan_f:
+; X64:       # %bb.0: # %entry
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
 entry:
   %0 = tail call i1 @llvm.is.fpclass.f32(float %x, i32 516)  ; ~(0x1f8|0x3) = "~(finite|nan)"
   ret i1 %0
 }
 
 define i1 @is_plus_inf_or_nan_f(float %x) {
-; CHECK-32-LABEL: is_plus_inf_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_inf_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_inf_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_inf_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 515)  ; 0x200|0x3 = "+inf|nan"
   ret i1 %class
 }
 
 define i1 @is_minus_inf_or_nan_f(float %x) {
-; CHECK-32-LABEL: is_minus_inf_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_inf_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_inf_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_inf_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 7)  ; "-inf|nan"
   ret i1 %class
 }
 
 define i1 @not_is_plus_inf_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_inf_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_inf_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_inf_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_plus_inf_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 508)  ; ~(0x200|0x3) = "~(+inf|nan)"
   ret i1 %class
 }
 
 define i1 @not_is_minus_inf_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_inf_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_inf_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_inf_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_is_minus_inf_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setl %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1016)  ; "~(-inf|nan)"
   ret i1 %class
 }
 
 define i1 @is_plus_inf_or_snan_f(float %x) {
-; CHECK-32-LABEL: is_plus_inf_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl %eax, %ecx
-; CHECK-32-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    andb %dl, %cl
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_inf_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    movl %eax, %ecx
-; CHECK-64-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    andb %dl, %cl
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_inf_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl %eax, %ecx
+; X86-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    andb %dl, %cl
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: is_plus_inf_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    movl %eax, %ecx
+; X64-GENERIC-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %cl
+; X64-GENERIC-NEXT:    andb %dl, %cl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %al
+; X64-GENERIC-NEXT:    orb %cl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: is_plus_inf_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax, %ecx # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %cl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 513)  ; 0x200|0x1 = "+inf|snan"
   ret i1 %class
 }
 
 define i1 @is_plus_inf_or_qnan_f(float %x) {
-; CHECK-32-LABEL: is_plus_inf_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_plus_inf_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_plus_inf_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_plus_inf_or_qnan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 514)  ; 0x200|0x1 = "+inf|qnan"
   ret i1 %class
 }
 
 define i1 @not_is_plus_inf_or_snan_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_inf_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    orb %cl, %dl
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_inf_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    orb %cl, %dl
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_inf_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    orb %cl, %dl
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_is_plus_inf_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    orb %cl, %dl
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setge %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_is_plus_inf_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    sete %cl
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setge %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 510) ; ~(+inf|snan)
   ret i1 %class
 }
 
 define i1 @not_is_plus_inf_or_qnan_f(float %x) {
-; CHECK-32-LABEL: not_is_plus_inf_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl %eax, %ecx
-; CHECK-32-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dh
-; CHECK-32-NEXT:    andb %dl, %dh
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %dl
-; CHECK-32-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    orb %dh, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_plus_inf_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    movl %eax, %ecx
-; CHECK-64-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %sil
-; CHECK-64-NEXT:    andb %dl, %sil
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %dl
-; CHECK-64-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    orb %sil, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_plus_inf_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl %eax, %ecx
+; X86-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %dh
+; X86-NEXT:    andb %dl, %dh
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %dl
+; X86-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    orb %dh, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_is_plus_inf_or_qnan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    movl %eax, %ecx
+; X64-GENERIC-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %sil
+; X64-GENERIC-NEXT:    andb %dl, %sil
+; X64-GENERIC-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    sete %dl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X64-GENERIC-NEXT:    setl %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    orb %sil, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_is_plus_inf_or_qnan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax, %ecx # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %sil
+; X64-NDD-NEXT:    andb %sil, %dl
+; X64-NDD-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    orb %dl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 509) ; ~(+inf|qnan)
   ret i1 %class
 }
 
 define i1 @is_minus_inf_or_snan_f(float %x) {
-; CHECK-32-LABEL: is_minus_inf_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl %eax, %ecx
-; CHECK-32-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    andb %dl, %cl
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_inf_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    movl %eax, %ecx
-; CHECK-64-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    andb %dl, %cl
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_inf_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl %eax, %ecx
+; X86-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    andb %dl, %cl
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: is_minus_inf_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    movl %eax, %ecx
+; X64-GENERIC-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %cl
+; X64-GENERIC-NEXT:    andb %dl, %cl
+; X64-GENERIC-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    sete %al
+; X64-GENERIC-NEXT:    orb %cl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: is_minus_inf_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax, %ecx # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %cl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 5)  ; "-inf|snan"
   ret i1 %class
 }
 
 define i1 @is_minus_inf_or_qnan_f(float %x) {
-; CHECK-32-LABEL: is_minus_inf_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: is_minus_inf_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: is_minus_inf_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: is_minus_inf_or_qnan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    cmpl $-8388608, %eax # imm = 0xFF800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 6)  ; "-inf|qnan"
   ret i1 %class
 }
 
 define i1 @not_is_minus_inf_or_snan_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_inf_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    orb %cl, %dl
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_inf_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    orb %cl, %dl
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_inf_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    orb %cl, %dl
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_is_minus_inf_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    orb %cl, %dl
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setge %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_is_minus_inf_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %cl
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setge %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1018)  ; "~(-inf|snan)"
   ret i1 %class
 }
 
 define i1 @not_is_minus_inf_or_qnan_f(float %x) {
-; CHECK-32-LABEL: not_is_minus_inf_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl %eax, %ecx
-; CHECK-32-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dh
-; CHECK-32-NEXT:    andb %dl, %dh
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %dl
-; CHECK-32-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    orb %dh, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_is_minus_inf_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    movl %eax, %ecx
-; CHECK-64-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %sil
-; CHECK-64-NEXT:    andb %dl, %sil
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %dl
-; CHECK-64-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    orb %sil, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_is_minus_inf_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl %eax, %ecx
+; X86-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %dh
+; X86-NEXT:    andb %dl, %dh
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %dl
+; X86-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X86-NEXT:    setl %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    orb %dh, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_is_minus_inf_or_qnan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    movl %eax, %ecx
+; X64-GENERIC-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %sil
+; X64-GENERIC-NEXT:    andb %dl, %sil
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %dl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X64-GENERIC-NEXT:    setl %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    orb %sil, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_is_minus_inf_or_qnan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax, %ecx # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %sil
+; X64-NDD-NEXT:    andb %sil, %dl
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    cmpl $2139095040, %ecx # imm = 0x7F800000
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    orb %dl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 1017)  ; "-inf|qnan"
   ret i1 %class
 }
 
 define i1 @issubnormal_or_nan_f(float %x) {
-; CHECK-32-LABEL: issubnormal_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    decl %eax
-; CHECK-32-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    decl %eax
-; CHECK-64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    decl %eax
+; X86-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %cl
+; X64-NEXT:    decl %eax
+; X64-NEXT:    cmpl $8388607, %eax # imm = 0x7FFFFF
+; X64-NEXT:    setb %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 147)  ; 0x90|0x3 = "subnormal|nan"
   ret i1 %class
 }
 
 define i1 @issubnormal_or_zero_or_nan_f(float %x) {
-; CHECK-32-LABEL: issubnormal_or_zero_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 243)  ; 0xf0|0x3 = "subnormal|zero|nan"
   ret i1 %class
 }
 
 define i1 @issubnormal_or_zero_or_nan_f_daz(float %x) #0 {
-; CHECK-32-LABEL: issubnormal_or_zero_or_nan_f_daz:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fldz
-; CHECK-32-NEXT:    fucompp
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_or_nan_f_daz:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    xorps %xmm1, %xmm1
-; CHECK-64-NEXT:    ucomiss %xmm1, %xmm0
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_or_nan_f_daz:
+; X86:       # %bb.0:
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fldz
+; X86-NEXT:    fucompp
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    sete %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_or_nan_f_daz:
+; X64:       # %bb.0:
+; X64-NEXT:    xorps %xmm1, %xmm1
+; X64-NEXT:    ucomiss %xmm1, %xmm0
+; X64-NEXT:    sete %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 243)  ; 0xf0|0x3 = "subnormal|zero|nan"
   ret i1 %class
 }
 
 define i1 @issubnormal_or_zero_or_snan_f(float %x) {
-; CHECK-32-LABEL: issubnormal_or_zero_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    movl %eax, %ecx
-; CHECK-32-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %dl
-; CHECK-32-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    andb %dl, %cl
-; CHECK-32-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    movl %eax, %ecx
-; CHECK-64-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %dl
-; CHECK-64-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    andb %dl, %cl
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    movl %eax, %ecx
+; X86-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X86-NEXT:    setl %dl
+; X86-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X86-NEXT:    setge %cl
+; X86-NEXT:    andb %dl, %cl
+; X86-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: issubnormal_or_zero_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    movl %eax, %ecx
+; X64-GENERIC-NEXT:    andl $2147483647, %ecx # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %dl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %cl
+; X64-GENERIC-NEXT:    andb %dl, %cl
+; X64-GENERIC-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %al
+; X64-GENERIC-NEXT:    orb %cl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: issubnormal_or_zero_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax, %ecx # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %ecx # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %dl
+; X64-NDD-NEXT:    cmpl $2139095041, %ecx # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %cl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 241)  ; 0x90|0x1 = "subnormal|snan"
   ret i1 %class
 }
 
 define i1 @issubnormal_or_zero_or_qnan_f(float %x) {
-; CHECK-32-LABEL: issubnormal_or_zero_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: issubnormal_or_zero_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: issubnormal_or_zero_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: issubnormal_or_zero_or_qnan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    sete %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NEXT:    setge %al
+; X64-NEXT:    orb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 242)  ; 0x90|0x2 = "subnormal|qnan"
   ret i1 %class
 }
 
 define i1 @not_issubnormal_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    testl %eax, %eax
-; CHECK-32-NEXT:    sete %dl
-; CHECK-32-NEXT:    orb %cl, %dl
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    testl %eax, %eax
-; CHECK-64-NEXT:    sete %dl
-; CHECK-64-NEXT:    orb %cl, %dl
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    testl %eax, %eax
+; X86-NEXT:    sete %dl
+; X86-NEXT:    orb %cl, %dl
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_issubnormal_or_nan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    testl %eax, %eax
+; X64-GENERIC-NEXT:    sete %dl
+; X64-GENERIC-NEXT:    orb %cl, %dl
+; X64-GENERIC-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_issubnormal_or_nan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %cl
+; X64-NDD-NEXT:    testl %eax, %eax
+; X64-NDD-NEXT:    sete %dl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 876)  ; ~(0x90|0x3) = ~"subnormal|nan"
   ret i1 %class
 }
 
 define i1 @not_issubnormal_or_zero_or_nan_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_or_zero_or_nan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    setne %cl
-; CHECK-32-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setl %al
-; CHECK-32-NEXT:    andb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_or_nan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    setne %cl
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setl %al
-; CHECK-64-NEXT:    andb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_or_nan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    setne %cl
+; X86-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setl %al
+; X86-NEXT:    andb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_or_zero_or_nan_f:
+; X64:       # %bb.0:
+; X64-NEXT:    movd %xmm0, %eax
+; X64-NEXT:    testl $2139095040, %eax # imm = 0x7F800000
+; X64-NEXT:    setne %cl
+; X64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NEXT:    setl %al
+; X64-NEXT:    andb %cl, %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 780)  ; ~(0xf0|0x3) = ~"subnormal|zero|nan"
   ret i1 %class
 }
 
 define i1 @not_issubnormal_or_zero_or_nan_f_daz(float %x) #0 {
-; CHECK-32-LABEL: not_issubnormal_or_zero_or_nan_f_daz:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    flds {{[0-9]+}}(%esp)
-; CHECK-32-NEXT:    fldz
-; CHECK-32-NEXT:    fucompp
-; CHECK-32-NEXT:    fnstsw %ax
-; CHECK-32-NEXT:    # kill: def $ah killed $ah killed $ax
-; CHECK-32-NEXT:    sahf
-; CHECK-32-NEXT:    setne %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_or_nan_f_daz:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    xorps %xmm1, %xmm1
-; CHECK-64-NEXT:    ucomiss %xmm1, %xmm0
-; CHECK-64-NEXT:    setne %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_or_nan_f_daz:
+; X86:       # %bb.0:
+; X86-NEXT:    flds {{[0-9]+}}(%esp)
+; X86-NEXT:    fldz
+; X86-NEXT:    fucompp
+; X86-NEXT:    fnstsw %ax
+; X86-NEXT:    # kill: def $ah killed $ah killed $ax
+; X86-NEXT:    sahf
+; X86-NEXT:    setne %al
+; X86-NEXT:    retl
+;
+; X64-LABEL: not_issubnormal_or_zero_or_nan_f_daz:
+; X64:       # %bb.0:
+; X64-NEXT:    xorps %xmm1, %xmm1
+; X64-NEXT:    ucomiss %xmm1, %xmm0
+; X64-NEXT:    setne %al
+; X64-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 780)  ; ~(0xf0|0x3) = ~"subnormal|zero|nan"
   ret i1 %class
 }
 
 define i1 @not_issubnormal_or_zero_or_snan_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_or_zero_or_snan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setge %cl
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %dl
-; CHECK-32-NEXT:    orb %cl, %dl
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %dl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_or_snan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setge %cl
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %dl
-; CHECK-64-NEXT:    orb %cl, %dl
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %dl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_or_snan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setge %cl
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %dl
+; X86-NEXT:    orb %cl, %dl
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %dl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_issubnormal_or_zero_or_snan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setge %cl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %dl
+; X64-GENERIC-NEXT:    orb %cl, %dl
+; X64-GENERIC-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    orb %dl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_issubnormal_or_zero_or_snan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setge %cl
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %dl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 782)  ; ~(0x90|0x1) = ~"subnormal|snan"
   ret i1 %class
 }
 
 define i1 @not_issubnormal_or_zero_or_qnan_f(float %x) {
-; CHECK-32-LABEL: not_issubnormal_or_zero_or_qnan_f:
-; CHECK-32:       # %bb.0:
-; CHECK-32-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-32-NEXT:    andl {{[0-9]+}}(%esp), %eax
-; CHECK-32-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-32-NEXT:    setl %cl
-; CHECK-32-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-32-NEXT:    setge %dl
-; CHECK-32-NEXT:    andb %cl, %dl
-; CHECK-32-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-32-NEXT:    sete %cl
-; CHECK-32-NEXT:    orb %dl, %cl
-; CHECK-32-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-32-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-32-NEXT:    setb %al
-; CHECK-32-NEXT:    orb %cl, %al
-; CHECK-32-NEXT:    retl
-;
-; CHECK-64-LABEL: not_issubnormal_or_zero_or_qnan_f:
-; CHECK-64:       # %bb.0:
-; CHECK-64-NEXT:    movd %xmm0, %eax
-; CHECK-64-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
-; CHECK-64-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
-; CHECK-64-NEXT:    setl %cl
-; CHECK-64-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
-; CHECK-64-NEXT:    setge %dl
-; CHECK-64-NEXT:    andb %cl, %dl
-; CHECK-64-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
-; CHECK-64-NEXT:    sete %cl
-; CHECK-64-NEXT:    orb %dl, %cl
-; CHECK-64-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
-; CHECK-64-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
-; CHECK-64-NEXT:    setb %al
-; CHECK-64-NEXT:    orb %cl, %al
-; CHECK-64-NEXT:    retq
+; X86-LABEL: not_issubnormal_or_zero_or_qnan_f:
+; X86:       # %bb.0:
+; X86-NEXT:    movl $2147483647, %eax # imm = 0x7FFFFFFF
+; X86-NEXT:    andl {{[0-9]+}}(%esp), %eax
+; X86-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X86-NEXT:    setl %cl
+; X86-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X86-NEXT:    setge %dl
+; X86-NEXT:    andb %cl, %dl
+; X86-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X86-NEXT:    sete %cl
+; X86-NEXT:    orb %dl, %cl
+; X86-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X86-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X86-NEXT:    setb %al
+; X86-NEXT:    orb %cl, %al
+; X86-NEXT:    retl
+;
+; X64-GENERIC-LABEL: not_issubnormal_or_zero_or_qnan_f:
+; X64-GENERIC:       # %bb.0:
+; X64-GENERIC-NEXT:    movd %xmm0, %eax
+; X64-GENERIC-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-GENERIC-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-GENERIC-NEXT:    setl %cl
+; X64-GENERIC-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-GENERIC-NEXT:    setge %dl
+; X64-GENERIC-NEXT:    andb %cl, %dl
+; X64-GENERIC-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-GENERIC-NEXT:    sete %cl
+; X64-GENERIC-NEXT:    orb %dl, %cl
+; X64-GENERIC-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-GENERIC-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-GENERIC-NEXT:    setb %al
+; X64-GENERIC-NEXT:    orb %cl, %al
+; X64-GENERIC-NEXT:    retq
+;
+; X64-NDD-LABEL: not_issubnormal_or_zero_or_qnan_f:
+; X64-NDD:       # %bb.0:
+; X64-NDD-NEXT:    movd %xmm0, %eax
+; X64-NDD-NEXT:    andl $2147483647, %eax # imm = 0x7FFFFFFF
+; X64-NDD-NEXT:    cmpl $2143289344, %eax # imm = 0x7FC00000
+; X64-NDD-NEXT:    setl %cl
+; X64-NDD-NEXT:    cmpl $2139095041, %eax # imm = 0x7F800001
+; X64-NDD-NEXT:    setge %dl
+; X64-NDD-NEXT:    andb %dl, %cl
+; X64-NDD-NEXT:    cmpl $2139095040, %eax # imm = 0x7F800000
+; X64-NDD-NEXT:    sete %dl
+; X64-NDD-NEXT:    orb %dl, %cl
+; X64-NDD-NEXT:    addl $-8388608, %eax # imm = 0xFF800000
+; X64-NDD-NEXT:    cmpl $2130706432, %eax # imm = 0x7F000000
+; X64-NDD-NEXT:    setb %al
+; X64-NDD-NEXT:    orb %cl, %al
+; X64-NDD-NEXT:    retq
   %class = tail call i1 @llvm.is.fpclass.f32(float %x, i32 781)  ; ~(0x90|0x2) = ~"subnormal|qnan"
   ret i1 %class
 }


        


More information about the llvm-commits mailing list