Skip to content

Commit 4073f86

Browse files
Added floating-point comparison tests (#44)
1 parent c4c2aff commit 4073f86

File tree

2 files changed

+59
-1
lines changed

2 files changed

+59
-1
lines changed

Tests/LLVMTests/FileCheck.swift

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -956,7 +956,7 @@ struct CheckString {
956956
// Match itself from the last position after matching CHECK-DAG.
957957
let matchBuffer = buffer.substring(from: buffer.index(buffer.startIndex, offsetBy: lastPos))
958958
guard let (matchPos, matchLen) = self.pattern.match(matchBuffer, variableTable) else {
959-
// PrintCheckFailed(*this, MatchBuffer, VariableTable)
959+
diagnose(.error, self.prefix + ": could not find '\(self.pattern.fixedString)' in input")
960960
return nil
961961
}
962962

Tests/LLVMTests/IRBuilderSpec.swift

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -142,6 +142,64 @@ class IRBuilderSpec : XCTestCase {
142142
// IRBUILDERCMP-NEXT: }
143143
module.dump()
144144
})
145+
146+
// MARK: Float comparisons
147+
XCTAssert(fileCheckOutput(of: .stderr, withPrefixes: ["IRBUILDERFCMP"]) {
148+
// IRBUILDERFCMP: ; ModuleID = 'IRBuilderTest'
149+
// IRBUILDERFCMP-NEXT: source_filename = "IRBuilderTest"
150+
let module = Module(name: "IRBuilderTest")
151+
let builder = IRBuilder(module: module)
152+
153+
// IRBUILDERFCMP: @a = global double 1
154+
// IRBUILDERFCMP-NEXT: @b = global double 1
155+
var g1 = builder.addGlobal("a", type: FloatType.double)
156+
g1.initializer = FloatType.double.constant(1)
157+
var g2 = builder.addGlobal("b", type: FloatType.double)
158+
g2.initializer = FloatType.double.constant(1)
159+
160+
// IRBUILDERFCMP: define void @main() {
161+
let main = builder.addFunction("main",
162+
type: FunctionType(argTypes: [],
163+
returnType: VoidType()))
164+
// IRBUILDERFCMP-NEXT: entry:
165+
let entry = main.appendBasicBlock(named: "entry")
166+
builder.positionAtEnd(of: entry)
167+
168+
// IRBUILDERFCMP-NEXT: %0 = load double, double* @a
169+
let vg1 = builder.buildLoad(g1)
170+
// IRBUILDERFCMP-NEXT: %1 = load double, double* @b
171+
let vg2 = builder.buildLoad(g2)
172+
173+
// IRBUILDERFCMP-NEXT: %2 = fcmp oeq double %0, %1
174+
_ = builder.buildFCmp(vg1, vg2, .oeq)
175+
// IRBUILDERFCMP-NEXT: %3 = fcmp one double %0, %1
176+
_ = builder.buildFCmp(vg1, vg2, .one)
177+
// IRBUILDERFCMP-NEXT: %4 = fcmp ugt double %0, %1
178+
_ = builder.buildFCmp(vg1, vg2, .ugt)
179+
// IRBUILDERFCMP-NEXT: %5 = fcmp uge double %0, %1
180+
_ = builder.buildFCmp(vg1, vg2, .uge)
181+
// IRBUILDERFCMP-NEXT: %6 = fcmp ult double %0, %1
182+
_ = builder.buildFCmp(vg1, vg2, .ult)
183+
// IRBUILDERFCMP-NEXT: %7 = fcmp ule double %0, %1
184+
_ = builder.buildFCmp(vg1, vg2, .ule)
185+
// IRBUILDERFCMP-NEXT: %8 = fcmp ogt double %0, %1
186+
_ = builder.buildFCmp(vg1, vg2, .ogt)
187+
// IRBUILDERFCMP-NEXT: %9 = fcmp oge double %0, %1
188+
_ = builder.buildFCmp(vg1, vg2, .oge)
189+
// IRBUILDERFCMP-NEXT: %10 = fcmp olt double %0, %1
190+
_ = builder.buildFCmp(vg1, vg2, .olt)
191+
// IRBUILDERFCMP-NEXT: %11 = fcmp ole double %0, %1
192+
_ = builder.buildFCmp(vg1, vg2, .ole)
193+
// IRBUILDERFCMP-NEXT: %12 = fcmp true double %0, %1
194+
_ = builder.buildFCmp(vg1, vg2, .true)
195+
// IRBUILDERFCMP-NEXT: %13 = fcmp false double %0, %1
196+
_ = builder.buildFCmp(vg1, vg2, .false)
197+
198+
// IRBUILDERFCMP-NEXT: ret void
199+
builder.buildRetVoid()
200+
// IRBUILDERFCMP-NEXT: }
201+
module.dump()
202+
})
145203
}
146204

147205
#if !os(macOS)

0 commit comments

Comments
 (0)