| ... | ... | @@ -2430,6 +2430,11 @@ pub const Function = struct { |
| 2430 | 2430 | @"llvm.sqrt.", |
| 2431 | 2431 | @"llvm.trunc.", |
| 2432 | 2432 | @"llvm.fma.", |
| 2433 | @"llvm.bitreverse.", |
| 2434 | @"llvm.bswap.", |
| 2435 | @"llvm.ctpop.", |
| 2436 | @"llvm.ctlz.", |
| 2437 | @"llvm.cttz.", |
| 2433 | 2438 | @"llvm.sadd.sat.", |
| 2434 | 2439 | @"llvm.smax.", |
| 2435 | 2440 | @"llvm.smin.", |
| ... | ... | @@ -2572,6 +2577,8 @@ pub const Function = struct { |
| 2572 | 2577 | .@"fsub fast", |
| 2573 | 2578 | .@"llvm.maxnum.", |
| 2574 | 2579 | .@"llvm.minnum.", |
| 2580 | .@"llvm.ctlz.", |
| 2581 | .@"llvm.cttz.", |
| 2575 | 2582 | .@"llvm.sadd.sat.", |
| 2576 | 2583 | .@"llvm.smax.", |
| 2577 | 2584 | .@"llvm.smin.", |
| ... | ... | @@ -2716,6 +2723,9 @@ pub const Function = struct { |
| 2716 | 2723 | .@"llvm.sin.", |
| 2717 | 2724 | .@"llvm.sqrt.", |
| 2718 | 2725 | .@"llvm.trunc.", |
| 2726 | .@"llvm.bitreverse.", |
| 2727 | .@"llvm.bswap.", |
| 2728 | .@"llvm.ctpop.", |
| 2719 | 2729 | => @as(Value, @enumFromInt(instruction.data)).typeOfWip(wip), |
| 2720 | 2730 | .getelementptr, |
| 2721 | 2731 | .@"getelementptr inbounds", |
| ... | ... | @@ -2783,6 +2793,8 @@ pub const Function = struct { |
| 2783 | 2793 | .@"fsub fast", |
| 2784 | 2794 | .@"llvm.maxnum.", |
| 2785 | 2795 | .@"llvm.minnum.", |
| 2796 | .@"llvm.ctlz.", |
| 2797 | .@"llvm.cttz.", |
| 2786 | 2798 | .@"llvm.sadd.sat.", |
| 2787 | 2799 | .@"llvm.smax.", |
| 2788 | 2800 | .@"llvm.smin.", |
| ... | ... | @@ -2928,6 +2940,9 @@ pub const Function = struct { |
| 2928 | 2940 | .@"llvm.sin.", |
| 2929 | 2941 | .@"llvm.sqrt.", |
| 2930 | 2942 | .@"llvm.trunc.", |
| 2943 | .@"llvm.bitreverse.", |
| 2944 | .@"llvm.bswap.", |
| 2945 | .@"llvm.ctpop.", |
| 2931 | 2946 | => @as(Value, @enumFromInt(instruction.data)).typeOf(function_index, builder), |
| 2932 | 2947 | .getelementptr, |
| 2933 | 2948 | .@"getelementptr inbounds", |
| ... | ... | @@ -3486,6 +3501,10 @@ pub const WipFunction = struct { |
| 3486 | 3501 | .@"llvm.sqrt.", |
| 3487 | 3502 | .@"llvm.trunc.", |
| 3488 | 3503 | => assert(val.typeOfWip(self).scalarType(self.builder).isFloatingPoint()), |
| 3504 | .@"llvm.bitreverse.", |
| 3505 | .@"llvm.bswap.", |
| 3506 | .@"llvm.ctpop.", |
| 3507 | => assert(val.typeOfWip(self).scalarType(self.builder).isInteger(self.builder)), |
| 3489 | 3508 | else => unreachable, |
| 3490 | 3509 | } |
| 3491 | 3510 | try self.ensureUnusedExtraCapacity(1, NoExtra, 0); |
| ... | ... | @@ -3507,6 +3526,9 @@ pub const WipFunction = struct { |
| 3507 | 3526 | .@"llvm.sin.", |
| 3508 | 3527 | .@"llvm.sqrt.", |
| 3509 | 3528 | .@"llvm.trunc.", |
| 3529 | .@"llvm.bitreverse.", |
| 3530 | .@"llvm.bswap.", |
| 3531 | .@"llvm.ctpop.", |
| 3510 | 3532 | => {}, |
| 3511 | 3533 | else => unreachable, |
| 3512 | 3534 | } |
| ... | ... | @@ -3525,6 +3547,9 @@ pub const WipFunction = struct { |
| 3525 | 3547 | .@"llvm.sin." => &llvm.Builder.buildSin, |
| 3526 | 3548 | .@"llvm.sqrt." => &llvm.Builder.buildSqrt, |
| 3527 | 3549 | .@"llvm.trunc." => &llvm.Builder.buildFTrunc, |
| 3550 | .@"llvm.bitreverse." => &llvm.Builder.buildBitReverse, |
| 3551 | .@"llvm.bswap." => &llvm.Builder.buildBSwap, |
| 3552 | .@"llvm.ctpop." => &llvm.Builder.buildCTPop, |
| 3528 | 3553 | else => unreachable, |
| 3529 | 3554 | }(self.llvm.builder, val.toLlvm(self), instruction.llvmName(self))); |
| 3530 | 3555 | } |
| ... | ... | @@ -3602,6 +3627,9 @@ pub const WipFunction = struct { |
| 3602 | 3627 | .urem, |
| 3603 | 3628 | .xor, |
| 3604 | 3629 | => assert(lhs.typeOfWip(self) == rhs.typeOfWip(self)), |
| 3630 | .@"llvm.ctlz.", |
| 3631 | .@"llvm.cttz.", |
| 3632 | => assert(lhs.typeOfWip(self).scalarType(self.builder).isInteger(self.builder) and rhs.typeOfWip(self) == .i1), |
| 3605 | 3633 | else => unreachable, |
| 3606 | 3634 | } |
| 3607 | 3635 | try self.ensureUnusedExtraCapacity(1, Instruction.Binary, 0); |
| ... | ... | @@ -3639,6 +3667,8 @@ pub const WipFunction = struct { |
| 3639 | 3667 | .fsub, .@"fsub fast" => &llvm.Builder.buildFSub, |
| 3640 | 3668 | .@"llvm.maxnum." => &llvm.Builder.buildMaxNum, |
| 3641 | 3669 | .@"llvm.minnum." => &llvm.Builder.buildMinNum, |
| 3670 | .@"llvm.ctlz." => &llvm.Builder.buildCTLZ, |
| 3671 | .@"llvm.cttz." => &llvm.Builder.buildCTTZ, |
| 3642 | 3672 | .@"llvm.sadd.sat." => &llvm.Builder.buildSAddSat, |
| 3643 | 3673 | .@"llvm.smax." => &llvm.Builder.buildSMax, |
| 3644 | 3674 | .@"llvm.smin." => &llvm.Builder.buildSMin, |
| ... | ... | @@ -4669,6 +4699,8 @@ pub const WipFunction = struct { |
| 4669 | 4699 | .@"icmp ult", |
| 4670 | 4700 | .@"llvm.maxnum.", |
| 4671 | 4701 | .@"llvm.minnum.", |
| 4702 | .@"llvm.ctlz.", |
| 4703 | .@"llvm.cttz.", |
| 4672 | 4704 | .@"llvm.sadd.sat.", |
| 4673 | 4705 | .@"llvm.smax.", |
| 4674 | 4706 | .@"llvm.smin.", |
| ... | ... | @@ -4809,6 +4841,9 @@ pub const WipFunction = struct { |
| 4809 | 4841 | .@"llvm.sin.", |
| 4810 | 4842 | .@"llvm.sqrt.", |
| 4811 | 4843 | .@"llvm.trunc.", |
| 4844 | .@"llvm.bitreverse.", |
| 4845 | .@"llvm.bswap.", |
| 4846 | .@"llvm.ctpop.", |
| 4812 | 4847 | => instruction.data = @intFromEnum(instructions.map(@enumFromInt(instruction.data))), |
| 4813 | 4848 | .getelementptr, |
| 4814 | 4849 | .@"getelementptr inbounds", |
| ... | ... | @@ -7706,6 +7741,9 @@ pub fn printUnbuffered( |
| 7706 | 7741 | .@"llvm.sin.", |
| 7707 | 7742 | .@"llvm.sqrt.", |
| 7708 | 7743 | .@"llvm.trunc.", |
| 7744 | .@"llvm.bitreverse.", |
| 7745 | .@"llvm.bswap.", |
| 7746 | .@"llvm.ctpop.", |
| 7709 | 7747 | => |tag| { |
| 7710 | 7748 | const val: Value = @enumFromInt(instruction.data); |
| 7711 | 7749 | try writer.print(" {s} {%}\n", .{ |
| ... | ... | @@ -7762,6 +7800,8 @@ pub fn printUnbuffered( |
| 7762 | 7800 | }, |
| 7763 | 7801 | .@"llvm.maxnum.", |
| 7764 | 7802 | .@"llvm.minnum.", |
| 7803 | .@"llvm.ctlz.", |
| 7804 | .@"llvm.cttz.", |
| 7765 | 7805 | .@"llvm.sadd.sat.", |
| 7766 | 7806 | .@"llvm.smax.", |
| 7767 | 7807 | .@"llvm.smin.", |